CodeIgniter ユーザガイド 日本語版 Version 2.0.1


データベースユーティリティクラス

データベースユーティリティクラスは、データベースの管理に便利なメソッドを持っています。

目次

ユーティリティクラスの初期化

Important: ユーティリティクラスは、データベースドライバに依存しているので、 ユーティリティクラスを初期化するには、あらかじめデータベースドライバが実行されている必要があります。

ユーティリティクラスは次のようにロードします:

$this->load->dbutil()

いったん初期化されれば、ユーティリティのメソッドは、$this->dbutil オブジェクトを利用してアクセスできます:

$this->dbutil->some_function()

$this->dbutil->list_databases()

データベース名の配列を返します:

$dbs = $this->dbutil->list_databases();

foreach ($dbs as $db)
{
    echo $db;
}

$this->dbutil->database_exists();

特定のデータベースが存在するかどうかを知る場合に役立ちます。 ブール値の TRUE/FALSE を返します。使用例:

if ($this->dbutil->database_exists('database_name'))
{
   // 何らかのコード...
}

Note: database_name を探しているテーブル名に置き換えてください。このメソッドは大文字小文字を区別します。

$this->dbutil->optimize_table('table_name');

Note: このメソッドは MySQL / MySQLi データベースでのみ使用できます。

第1引数に指定した名前のテーブルを最適化できます。処理が成功したか失敗したかにより、TRUE / FALSE を返します:

if ($this->dbutil->optimize_table('table_name'))
{
    echo '成功!';
}

Note: すべてのデータベースプラットフォームがテーブルの最適化をサポートしているわけではありません。

$this->dbutil->repair_table('table_name');

Note: このメソッドは MySQL / MySQLi データベースでのみ使用できます。

第1引数に指定した名前のテーブルを修復できます。処理が成功したか失敗したかにより、TRUE / FALSE を返します:

if ($this->dbutil->repair_table('table_name'))
{
    echo '成功!';
}

Note:すべてのデータベースプラットフォームがテーブルの修復をサポートしているわけではありません。

$this->dbutil->optimize_database();

Note: このメソッドは MySQL / MySQLi データベースでのみ使用できます。

現在接続中のデータベースを最適化します。DBステータスメッセージの配列または、失敗した場合に FALSE を返します。

$result = $this->dbutil->optimize_database();

if ($result !== FALSE)
{
    print_r($result);
}

Note:すべてのデータベースプラットフォームがデータベースの最適化をサポートしているわけではありません。

$this->dbutil->csv_from_result($db_result)

クエリの結果からCSVを生成することができます。 第1引数に結果オブジェクトを指定する必要があります。例:

$this->load->dbutil();

$query = $this->db->query("SELECT * FROM mytable");

echo $this->dbutil->csv_from_result($query);

第2、第3引数で、区切り文字(デリミタ)と改行文字を指定できます。 デフォルトでは、デリミタにタブを改行に "\n" (LF) を使います。例:

$delimiter = ",";
$newline = "\r\n";

echo $this->dbutil->csv_from_result($query, $delimiter, $newline);

Important:  このメソッドは、CSV を ファイルには書き出しません。単に、CSV に整形するだけです。 ファイルに書き込む必要がある場合は、 ファイルヘルパ を利用します。

$this->dbutil->xml_from_result($db_result)

クエリの結果からXMLを生成します。第一引数には、結果オブジェクトが入り、 第2引数には、オプションで設定パラメータの配列が入ります。例:

$this->load->dbutil();

$query = $this->db->query("SELECT * FROM mytable");

$config = array (
                  'root'    => 'root',
                  'element' => 'element',
                  'newline' => "\n",
                  'tab'    => "\t"
                );

echo $this->dbutil->xml_from_result($query, $config);

Important: このメソッドは、XML を ファイルには書き出しません。単に、XML に整形するだけです。 ファイルに書き込む必要がある場合は、 ファイルヘルパ を利用します。

$this->dbutil->backup()

データベース全体もしくは個別のテーブルをバックアップできます。バックアップデータは Zip または Gzip フォーマットのどちらかの形式で圧縮できます [ 訳注: バックアップ結果をファイルに保存するには、ファイルヘルパを利用する必要があります ]。

Note: このメソッドは MySQL データベースでのみ使用できます。

Note: 実行制限時間と PHP が利用できる空きメモリ容量に注意してください。 大規模なデータベースのバックアップはできないかもしれません。データベースが大規模な場合は、 サーバで直接 SQL を使ってバックアップする必要があるかしれません。ルート権限を持たない場合にはサーバ管理者がそれを行う必要があります。

使用例

// DB ユーティリティクラスをロード
$this->load->dbutil();

// データベース全体をバックアップしその結果を変数に代入
$backup =& $this->dbutil->backup();

// ヘルパをロードし、サーバにファイルを書き出す
$this->load->helper('file');
write_file('/path/to/mybackup.gz', $backup);

// ダウンロードヘルパをロードし、ファイルをデスクトップに送信する
$this->load->helper('download');
force_download('mybackup.gz', $backup);

バックアップオプションの設定

バックアップのオプションは、バックアップメソッドの第1引数で配列で渡すことができます。例:

$prefs = array(
                'tables'      => array('table1', 'table2'),  // バックアップするテーブルの配列。
                'ignore'      => array(),           // バックアップしないテーブルのリスト。
                'format'      => 'txt',             // gzip, zip, txt
                'filename'    => 'mybackup.sql',    // ファイル名 - ZIP ファイルのときだけ必要
                'add_drop'    => TRUE,              // バックアップファイルにDROP TABLE 文を追加するかどうか
                'add_insert'  => TRUE,              // バックアップファイルにINSERT 文を追加するかどうか
                'newline'     => "\n"               // バックアップファイルで使う改行文字
              );

$this->dbutil->backup($prefs);

バックアップオプションの説明

設定項目 初期値 選択肢 説明
tables空の配列なしバックアップしたいテーブルの配列。空のままにしておけば、全テーブルがエクスポートされます。
ignore空の配列なしバックアップ処理の対象外にするテーブルの配列。
formatgzipgzip, zip, txtエクスポートファイルのファイル形式。
filename現在日時なしバックアップファイルの名前。名前は、ZIP圧縮を使う場合のみ必要になります。
add_dropTRUETRUE/FALSESQL エクスポートファイルに、DROP TABLE 文を追加するかどうか。
add_insertTRUETRUE/FALSESQL エクスポートファイルに、INSERT 文を追加するかどうか。
newline"\n""\n", "\r", "\r\n"SQL エクスポートファイルで使う改行文字の種類。