數(shù)據(jù)庫工具類
數(shù)據(jù)庫工具類包含有幫助你管理數(shù)據(jù)庫的函數(shù)
目錄
- 初始化數(shù)據(jù)庫工具類
- 列出所有數(shù)據(jù)庫名
- 查找某個(gè)特定的數(shù)據(jù)庫
- 優(yōu)化數(shù)據(jù)表
- 修復(fù)數(shù)據(jù)庫
- 優(yōu)化數(shù)據(jù)庫
- 從數(shù)據(jù)庫結(jié)果集導(dǎo)出CSV文件
- 從數(shù)據(jù)庫結(jié)果集導(dǎo)出XML文件
- 備份數(shù)據(jù)庫
初始化數(shù)據(jù)庫工具類
重要提示:? 初始化數(shù)據(jù)庫工具類之前,你的數(shù)據(jù)庫驅(qū)動(dòng)必須已經(jīng)運(yùn)行,因?yàn)楣ぞ哳愐蕾囉诖恕?/p>
加載工具類:
$this->load->dbutil()
一旦初始化完畢,你可以通過 $this->dbutil 對(duì)象來訪問成員函數(shù):
$this->dbutil->some_function()
$this->dbutil->list_databases()
返回一個(gè)含有數(shù)據(jù)庫名的數(shù)組:
$dbs = $this->dbutil->list_databases();
foreach ($dbs as $db)
{
??? echo $db;
}
$this->dbutil->database_exists();
有時(shí)候判斷一個(gè)特定的數(shù)據(jù)庫是否存在,是非常有用的功能。返回一個(gè)布爾值 TRUE/FALSE. 使用范例:
if ($this->dbutil->database_exists('database_name'))
{
?? // some code...
}
注意: 將 database_name 替換為你想要查找的數(shù)據(jù)庫名稱。這個(gè)函數(shù)是區(qū)分大小寫的。
$this->dbutil->optimize_table('table_name');
注意:? 此特性僅在MySQL/MySQLi數(shù)據(jù)庫中可用。
允許你優(yōu)化第一個(gè)參數(shù)為表名的表?;诓僮鞯某晒蚴》祷豑RUE或FALSE:
if ($this->dbutil->optimize_table('table_name'))
{
??? echo 'Success!';
}
注意: 并非所有數(shù)據(jù)庫平臺(tái)都支持表優(yōu)化
$this->dbutil->repair_table('table_name');
注意:? 此特性僅在MySQL/MySQLi數(shù)據(jù)庫中可用。
允許你修復(fù)第一個(gè)參數(shù)為表名的表。基于操作的成功或失敗返回TRUE或FALSE:
if ($this->dbutil->repair_table('table_name'))
{
??? echo 'Success!';
}
注意: 并非所有數(shù)據(jù)庫平臺(tái)都支持表修復(fù)。
$this->dbutil->optimize_database();
注意:? 此特性僅在MySQL/MySQLi數(shù)據(jù)庫中可用。
允許你優(yōu)化當(dāng)前DB類所連接到的數(shù)據(jù)庫。返回一個(gè)包含DB狀態(tài)信息的數(shù)組,失敗返回 FALSE。
$result = $this->dbutil->optimize_database();
if ($result !== FALSE)
{
??? print_r($result);
}
注意: 并非所有數(shù)據(jù)平臺(tái)都支持表優(yōu)化。
$this->dbutil->csv_from_result($db_result)
允許你從查詢結(jié)果集生成一個(gè)CSV文件。第一個(gè)參數(shù)必須為查詢結(jié)果集對(duì)象。例如:
$this->load->dbutil();
$query = $this->db->query("SELECT * FROM mytable");
echo $this->dbutil->csv_from_result($query);
第二和第三個(gè)參數(shù)允許你設(shè)置分隔符和換行符。默認(rèn)使用tab(跳格)作為分隔符,使用“ ”作為換行符。例如:
$delimiter = ",";
$newline = "\r\n";
echo $this->dbutil->csv_from_result($query, $delimiter, $newline);
重要:?此函數(shù)不會(huì)將生成的CSV文件保存到磁盤。它只是簡(jiǎn)單的創(chuàng)建CSV格式。如果需要將文件保存到磁盤,使用文件輔助函數(shù)。
$this->dbutil->xml_from_result($db_result)
允許你從結(jié)果集中生成一個(gè)XML文件。第一個(gè)參數(shù)是查詢結(jié)果集對(duì)象,第二個(gè)參數(shù)為可選數(shù)組參數(shù),數(shù)組包含配置參數(shù)。例如:
$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);
重要:? 此函數(shù)不會(huì)將生成的XML文件保存到磁盤。它只是簡(jiǎn)單的創(chuàng)建XML格式。如果需要將文件保存到磁盤,使用文件輔助函數(shù)。
$this->dbutil->backup()
允許你備份整個(gè)數(shù)據(jù)庫或者獨(dú)立的表。備份數(shù)據(jù)可以壓縮為Zip或Gzip格式。
注意:? 該特性僅在使用MySQL數(shù)據(jù)庫時(shí)有效。
備注:由于PHP執(zhí)行時(shí)間和內(nèi)存的限制,備份巨大的數(shù)據(jù)庫可能不太容易成功。如果你的數(shù)據(jù)庫非常大,你可能需要直接從命令行執(zhí)行相關(guān)命令;或者如果你沒有相應(yīng)權(quán)限,你可能需要服務(wù)器管理員為你做這件事。
用法:
// 加載數(shù)據(jù)庫工具類
$this->load->dbutil();
// 備份整個(gè)數(shù)據(jù)庫并將其賦值給一個(gè)變量
$backup =& $this->dbutil->backup();
// 加載文件輔助函數(shù)并將文件寫入你的服務(wù)器
$this->load->helper('file');
write_file('/path/to/mybackup.gz', $backup);
// 加載下載輔助函數(shù)并將文件發(fā)送到你的桌面
$this->load->helper('download');
force_download('mybackup.gz', $backup);
設(shè)置備份參數(shù)
將一個(gè)包含了各項(xiàng)參數(shù)值的數(shù)組作為第一個(gè)函數(shù)參數(shù)傳遞給備份函數(shù),就可以設(shè)置數(shù)據(jù)庫備份的參數(shù)。例如:
$prefs = array(
????????????????'tables'??????=> array('table1', 'table2'),??// 包含了需備份的表名的數(shù)組.
????????????????'ignore'??????=> array(),???????????// 備份時(shí)需要被忽略的表
????????????????'format'??????=> 'txt',?????????????// gzip, zip, txt
????????????????'filename'????=> 'mybackup.sql',????// 文件名 - 如果選擇了ZIP壓縮,此項(xiàng)就是必需的
????????????????'add_drop'????=> TRUE,??????????????// 是否要在備份文件中添加 DROP TABLE 語句
????????????????'add_insert'??=> TRUE,??????????????// 是否要在備份文件中添加 INSERT 語句
????????????????'newline'?????=> "\n"???????????????// 備份文件中的換行符
??????????????);
$this->dbutil->backup($prefs);
備份參數(shù)說明
參數(shù) | 默認(rèn)值 | 選項(xiàng) | 描述 |
---|---|---|---|
tables | 空數(shù)組 | 無 | 你想備份的數(shù)據(jù)表數(shù)組,如果留空將備份所有數(shù)據(jù)表. |
ignore | 空數(shù)組 | 無 | 忽略備份的數(shù)據(jù)表數(shù)組 |
format | gzip | gzip, zip, txt | 導(dǎo)出文件的格式 |
filename | 當(dāng)前日期/時(shí)間 | 無 | 備份文件名. 如果您使用了zip壓縮這個(gè)名字是必填的. |
add_drop | TRUE | TRUE/FALSE | 是否在您的輸出的SQL文件里包含DROP TABLE聲明. |
add_insert | TRUE | TRUE/FALSE | 是否在您的輸出的SQL文件里包含INSERT聲明. |
newline | "\n" | "\n", "\r", "\r\n" | 使用在您輸出的SQL文件里的換行符類型. |
?