# CodeIgniter 用户指南 版本 2.2.0

编辑文档、查看近期更改请 登录 或 注册 找回密码

搜索用户指南

查看原文

# 数据库工具类

数据库工具类包含有帮助你管理数据库的函数

### 目录

- 初始化数据库工具类
- 列出所有数据库名
- 查找某个特定的数据库
- 优化数据表
- 修复数据库
- 优化数据库
- 从数据库结果集导出CSV文件
- 从数据库结果集导出XML文件
- 备份数据库

## 初始化数据库工具类

重要提示： 初始化数据库工具类之前，你的数据库驱动必须已经运行,因为工具类依赖于此。

加载工具类：

`$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'))
{
// some code...
}`

注意: 将 database_name 替换为你想要查找的数据库名称。这个函数是区分大小写的。

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

注意： 此特性仅在MySQL/MySQLi数据库中可用。

允许你优化第一个参数为表名的表。基于操作的成功或失败返回TRUE或FALSE：

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

注意： 并非所有数据库平台都支持表优化

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

注意： 此特性仅在MySQL/MySQLi数据库中可用。

允许你修复第一个参数为表名的表。基于操作的成功或失败返回TRUE或FALSE：

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

注意： 并非所有数据库平台都支持表修复。

## $this->dbutil->optimize_database();

注意： 此特性仅在MySQL/MySQLi数据库中可用。

允许你优化当前DB类所连接到的数据库。返回一个包含DB状态信息的数组，失败返回 FALSE。

`$result = $this->dbutil->optimize_database();
if ($result !== FALSE)
{
print_r($result);
}`

注意： 并非所有数据平台都支持表优化。

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

允许你从查询结果集生成一个CSV文件。第一个参数必须为查询结果集对象。例如：

`$this->load->dbutil();
$query = $this->db->query("SELECT * FROM mytable");
echo $this->dbutil->csv_from_result($query);`

第二和第三个参数允许你设置分隔符和换行符。默认使用tab（跳格）作为分隔符，使用“\n”作为换行符。例如：

`$delimiter = ",";
$newline = "\r\n";
echo $this->dbutil->csv_from_result($query, $delimiter, $newline);`

重要： 此函数不会将生成的CSV文件保存到磁盘。它只是简单的创建CSV格式。如果需要将文件保存到磁盘，使用文件辅助函数。

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

允许你从结果集中生成一个XML文件。第一个参数是查询结果集对象，第二个参数为可选数组参数，数组包含配置参数。例如：

`$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格式。如果需要将文件保存到磁盘，使用文件辅助函数。

## $this->dbutil->backup()

允许你备份整个数据库或者独立的表。备份数据可以压缩为Zip或Gzip格式。

注意： 该特性仅在使用MySQL数据库时有效。

备注：由于PHP执行时间和内存的限制，备份巨大的数据库可能不太容易成功。如果你的数据库非常大，你可能需要直接从命令行执行相关命令；或者如果你没有相应权限，你可能需要服务器管理员为你做这件事。

### 用法：

`// 加载数据库工具类
$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);`

### 设置备份参数

将一个包含了各项参数值的数组作为第一个函数参数传递给备份函数，就可以设置数据库备份的参数。例如:

`$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文件里的换行符类型.

翻译贡献者: Hex, ianyang, iptton, skey, thankwsx, yinzhili
最后修改: 2012-02-05 23:03:30