Класс утилит БД
Класс утилит БД содержит функции, которые позволяют вам управлять вашей базой данных.
Содержание
- Инициализация класса утилит
- Список ваших БД
- Проверка конкретной БД
- Оптимизация таблиц
- Восстановление БД
- Оптимизация БД
- Файлы 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-файле. |