Получите помощь, поддержку и профессиональное общение в Клубе CodeIgniter

# CodeIgniter User Guide Version 2.1.3

Search User Guide

# Класс утилит БД

Класс утилит БД содержит функции, которые позволяют вам управлять вашей базой данных.

### Содержание

- Инициализация класса утилит
- Список ваших БД
- Проверка конкретной БД
- Оптимизация таблиц
- Восстановление БД
- Оптимизация БД
- Файлы 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'))
{
// какой-то код...
}`

Примечание: Замените 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.

Позволяет вам оптимизировать БД, к которой вы сейчас подключены. Возвращает массив со статусными сообщениями при успехе, или 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);`

Второй параметр позволяет указать символы ограничителя и новой строки. По умолчанию в качестве ограничителя используются табы, и \n в качестве символа новой строки. Пример:

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

Важно: Эта функция НЕ записывает файл CSV. Она просто создает верстку CSV. Если вы хотите записать файл, используйте помощник File.

## $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-верстку. Если вы хотите записать файл, используйте помощник File.

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

Позволяет вам сделать бэкап БД или отдельных таблиц. Данные бэкапа могут быть сжаты в форматы Zip или Gzip.

Примечание: Эта функция доступна только для БД MySQL.

Примечание: из-за ограниченного времени выполнения и лимитов на потребление памяти, резервное копирование очень больших БД может быть невозможно. Если ваша БД очень велика, целесообразно делать копию прямо с сервера SQL через командную строку. Или попросите админстратора сервера сделать это за вас, если у вас нет соответствующих прав.

### Пример использования

`// Загрузка класса утилит БД
$this->load->dbutil();
// Получение бэкапа и присвоение его переменной
$backup =& $this->dbutil->backup();
// Загрузка помощника file и запись файла на сервер
$this->load->helper('file');
write_file('/path/to/mybackup.gz', $backup);
// Загрузка помощника download и отправка файла на десктоп
$this->load->helper('download');
force_download('mybackup.gz', $backup);`

### Установка параметров бэкапа

Параметры бэкапа устанавливаются передачей массива из значений первым параметром функции. Пример:

`$prefs = array(
'tables' => array('table1', 'table2'), // Array of tables to backup.
'ignore' => array(), // List of tables to omit from the backup
'format' => 'txt', // gzip, zip, txt
'filename' => 'mybackup.sql', // File name - NEEDED ONLY WITH ZIP FILES
'add_drop' => TRUE, // Whether to add DROP TABLE statements to backup file
'add_insert' => TRUE, // Whether to add INSERT data to backup file
'newline' => "\n" // Newline character used in backup file
);
$this->dbutil->backup($prefs);`

### Описание настроек бэкапа

Параметр | Значение по умолчанию | Опции | Описание
--- | --- | --- | ---
tables | пустой массив | Нет | Массив таблиц для бэкапа. Если оставить пустым, все таблицы будут экспортированы.
ignore | пустой массив | Нет | Массив таблиц, которые следует проигнорировать.
format | gzip | gzip, zip, txt | Формат файла экспорта.
filename | текущая дата и время | Нет | Имя файла бэкапа. Требуется только в том случае, если вы используете компрессию zip.
add_drop | TRUE | TRUE/FALSE | Включать ли условия DROP TABLE в ваш экспортный SQL-файл.
add_insert | TRUE | TRUE/FALSE | Включать ли условия INSERT в ваш экспортный SQL-файл.
newline | "\n" | "\n", "\r", "\r\n" | Тип переноса строки, используемый в экспортном SQL-файле.

### Поделиться

Переведено в компании Аринт.

# Спасибо!

Вы тоже можете оказать помощь проекту! Как это сделать?

## Помощь и поддержка

Вы можете задать вопросы и получить ответы и советы от гуру CodeIgniter и веб-разработки: вступайте в Клуб CodeIgniter