Класс Database Utility (утилиты)
Класс Database Utility содержит функции, которые позволят вам управлять вашей базой данных.
Содержание
- Инициализация класса
- Список ваших баз данных
- Проверка конкретной базы данных
- Оптимизация таблиц
- Восстановление баз данных
- Оптимизация баз данных
- Получение файлов CSV из результата
- Получение файлов XML из результата выборки
- Бэкап
Инициализация класса
Важно: Для того, чтобы инициализировать класс Utility, ваш драйвер базы данных должен быть запущен, так как класс Utility зависит от него.
Загружайте класс Utility, как показано ниже:
$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->db->database_exists();
Иногда полезно узнать, существует ли конкретная база данных. Возвращает булево TRUE/FALSE. Пример использования:
if ($this->db->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.
Позволяет вам оптимизировать базу данных, к которой класс Database подключен в текущий момент. Возвращает массив, содержащий статусные сообщения базы данных или 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, она только создает разметку. Если вы хотите записать файл, используйте помощник File.
$this->dbutil->backup()
Позволяет вам получить бэкап вашей базы или отдельных таблиц. Данные бэкапа могут быть сжаты в формат zip или gzip.
Примечание: Эта функция доступна только для баз данных MySQL.
Примечание: учитывая ограниченное время выполнения и ограничение по памяти для PHP, бэкап очень больших баз данных может быть невозможен. Если ваша база данных очень большая, вы можете делать бэкап прямо на SQL сервере из командной строки, или через средство администрирования сервера, если у вас нет привилегий администратора.
Пример использования
// Загружает класс DB utility
$this->load->dbutil();
// Получает бэкап и пишет его в переменную
$backup =& $this->dbutil->backup();
// Load the file helper and write the file to your server
$this->load->helper('file');
write_file('/path/to/mybackup.gz', $backup);
// Загружает помощник download и отправляет файл на ваш десктоп
$this->load->helper('download');
force_download('mybackup.gz', $backup);
Установка параметров бэкапа
Параметры бэкапа передаются массивом со значениями, в первый параметр функции 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 | текущая date/time | Нет | Имя файла с бэкапом. Имя нужно только для zip-сжатия. |
add_drop | TRUE | TRUE/FALSE | Включать ли заявление DROP TABLE в SQL экспортируемого файла. |
add_insert | TRUE | TRUE/FALSE | Включать ли заявление INSERT в SQL экспортируемого файла. |
newline | "\n" | "\n", "\r", "\r\n" | Тип символа новой строки. |