データベースユーティリティクラス¶
データベースユーティリティクラスは、データベースの管理に便利なメソッド を持っています。
ユーティリティクラスの初期化¶
重要
ユーティリティクラスは、データベースドライバに依存しているので、 初期化するには、あらかじめデータベースドライバが実行されている必要があります。
ユーティリティクラスは次のようにロードします:
$this->load->dbutil();
デフォルト以外のDBユーティリティローダを使いたい場合、別のデータベースオブジェクト を渡すこともできます:
$this->myutil = $this->load->dbutil($this->other_db, TRUE);
上記の例では、第1引数にカスタムデータベースオブジェクトを渡して、 $this->dbutil に直接アサインするかわりに dbutil オブジェクトを返すように 命令しています。
注釈
両方の引数は独立して使えるので、第1引数をスキップしたい場合は 空の値を渡せば良いです。
いったん初期化されれば、ユーティリティのメソッドは、 $this->dbutil オブジェクトを利用してアクセスできます:
$this->dbutil->some_method();
データベースユーティリティを使う¶
データベース名の配列を取得¶
データベース名の配列を返します:
$dbs = $this->dbutil->list_databases();
foreach ($dbs as $db)
{
echo $db;
}
データベースが存在するか確認¶
特定のデータベースが存在するかどうかを確認するのが役立つことがあります。 ブール値の TRUE/FALSE を返します。使用例:
if ($this->dbutil->database_exists('database_name'))
{
// some code...
}
注釈
database_name を探しているテーブル名に置き換えてください。 このメソッドは大文字小文字を区別します。
テーブルの最適化¶
第1引数に渡したテーブルを最適化してくれます。 成功か失敗かに応じて TRUE/FALSE を返します:
if ($this->dbutil->optimize_table('table_name'))
{
echo 'Success!';
}
注釈
すべてのデータベースプラットフォームがテーブルの最適化を サポートしているわけではありません。ほとんどの場合は MySQL で使われます。
テーブルの修復¶
第1引数に渡したテーブルを修復してくれます。 成功か失敗かに応じて TRUE/FALSE を返します:
if ($this->dbutil->repair_table('table_name'))
{
echo 'Success!';
}
注釈
すべてのデータベースプラットフォームがテーブルの修復をサポートしているわけではありません。
データベースの最適化¶
DBクラスが現在接続しているデータベースを最適化してくれます。 DBステータスメッセージの配列または、失敗した場合に FALSE を返します。
$result = $this->dbutil->optimize_database();
if ($result !== FALSE)
{
print_r($result);
}
注釈
すべてのデータベースプラットフォームがデータベースの最適化を サポートしているわけではありません。ほとんどの場合は MySQL で使われます。
クエリ結果を CSV ファイルとしてエクスポート¶
クエリ結果から CSV ファイルを生成してくれます。 メソッドの第1引数にはクエリの結果オブジェクトを 含む必要があります。例:
$this->load->dbutil();
$query = $this->db->query("SELECT * FROM mytable");
echo $this->dbutil->csv_from_result($query);
第2、第3、第4引数はそれぞれ区切り文字、改行文字、囲み文字 をセットするためのものです。デフォルトでは区切り文字はカンマ、 改行文字”n”、囲み文字にはダブルクオートが使用されます。 例:
$delimiter = ",";
$newline = "\r\n";
$enclosure = '"';
echo $this->dbutil->csv_from_result($query, $delimiter, $newline, $enclosure);
重要
このメソッドは、CSV をファイルには書き出しません。 単に、CSV に整形するだけです。ファイルに書き込む必要がある場合は、 ファイルヘルパー を利用します。
クエリ結果を XML ドキュメントとしてエクスポート¶
クエリの結果からXMLを生成します。第1引数には、結果オブジェクトが入り、 第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);
重要
このメソッドは、XML をファイルには書き出しません。 単に、XML に整形するだけです。ファイルに書き込む必要がある場合は、 ファイルヘルパー を利用します。
データベースのバックアップ¶
データベースバックアップの注意事項¶
データベース全体もしくは個別のテーブルをバックアップできます。バックア ップデータは Zip または Gzip フォーマットのどちらかの形式で圧縮できます。
注釈
このメソッドは MySQL と Interbase/Firebird データベースでのみ使用できます。
注釈
Interbase/Firebird データベースをお使いの場合は、バックアップファイル名が唯一の引数です。
$this->dbutil->backup(‘db_backup_filename’);
注釈
実行制限時間と 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);
バックアップオプションの設定¶
バックアップのオプションは、 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 | 空の配列 | なし | バックアップ処理の対象外にするテーブルの配列 |
format | gzip | gzip, zip, txt | エクスポートファイルのファイル形式。 |
filename | 現在日時 | なし | バックアップファイルの名前。名前は、ZIP圧縮を使う場合のみ必要 になります。 |
add_drop | TRUE | TRUE/FALSE | SQL エクスポートファイルに、DROP TABLE 文を追加するかどうか。 |
add_insert | TRUE | TRUE/FALSE | SQL エクスポートファイルに、INSERT 文を追加するかどうか。 |
newline | “\n” | “\n”, “\r”, “\r\n” | SQL エクスポートファイルで使う改行文字の種類。 |
foreign_key_checks | TRUE | TRUE/FALSE | 出力が外部キーチェックを有効にするかどうか。 |
クラスリファレンス¶
- class CI_DB_utility¶
- backup([$params = array()])¶
パラメータ: - $params (array) – オプションの連想配列
返り値: 生の/(g)zip された SQL クエリ文字列
返り値の型: string
ユーザーオプションに基づいてデータベースバックアップを実行。
- database_exists($database_name)¶
パラメータ: - $database_name (string) – データベース名
返り値: 存在する場合 TRUE , それ以外は FALSE
返り値の型: bool
データベースの存在を確認。
- list_databases()¶
返り値: 見つかったデータベース名の配列 返り値の型: array すべてのデータベース名の配列を取得。
- optimize_database()¶
返り値: 最適化メッセージの配列か、失敗時は FALSE 返り値の型: array データベースを最適化。
- optimize_table($table_name)¶
パラメータ: - $table_name (string) – 最適化するテーブル名
返り値: 最適化メッセージの配列か、失敗時は FALSE
返り値の型: array
データベース内のテーブルを最適化。
- repair_table($table_name)¶
パラメータ: - $table_name (string) – 修復したいテーブル名
返り値: 修復メッセージの配列か、失敗時は FALSE
返り値の型: array
データベース内のテーブルを修復。
- csv_from_result($query[, $delim = ', '[, $newline = "n"[, $enclosure = '"']]])¶
パラメータ: - $query (object) – データベース結果オブジェクト
- $delim (string) – CSV フィールド区切り文字
- $newline (string) – 改行文字
- $enclosure (string) – 囲み文字
返り値: 生成された CSV ドキュメントの文字列
返り値の型: string
データベース結果オブジェクトを CSV ドキュメントに変換。
- xml_from_result($query[, $params = array()])¶
パラメータ: - $query (object) – データベース結果オブジェクト
- $params (array) – オプションの連想配列
返り値: 生成された XML ドキュメントの文字列
返り値の型: string
データベース結果オブジェクトを XML ドキュメントに変換。