papilio

Создание резервной копии БД WordPress

Задача: скопировать всю БД с WordPress, чтобы перенести на другой хостинг. Существует несколько способов решения. Например, с помощью команды mysqldump (предварительно зайдя на SSH хостера):

mysqldump db_name -u user -ppassword > dump.sql

А можно воспользоваться многочисленными плагинами для самого WordPress. Однако, для моего случая ничего не помогло.

Условия: дурацкий хостинг, где вроде бы кодировка стоит и UTF8, однако в базе всё равно полная каша. Но стоит заметить, что на сайте всё отображается прекрасно.

Поэтому я решил написать небольшой php-скрипт для создания резервной копии БД WordPress, основанный на внутренних функциях и API по работе с базой.

Сначала подключаются файлы WordPress:

require(dirname(__FILE__) . '/wp-config.php');
include_once(dirname(__FILE__) . '/wp-includes/wp-db.php');

Для получения списка всех таблиц используется обычный SQL-запрос:

$table = $wpdb->get_col("SHOW TABLES");

Запрос для формирования создания таблицы:

$name = $wpdb->get_row("SHOW CREATE TABLE $table[$table_i]",ARRAY_A);
echo $name["Create Table"];

Для получения результата и для получения названия всех столбцов, используется соответственно get_results и get_col_info:

$results = $wpdb->get_results("SELECT * FROM $table[$table_i]", ARRAY_N);
$col_info = $wpdb->get_col_info('name', -1);
$col_str = '';
 
foreach ($col_info as $col) {
$col_str .= "`$col`,";
}

Вот, в принципе, и всё, что необходимо. Чтобы сделать резервную копию, разместите файл в корень WordPress (там, где находится wp-config.php): wordpress-backup.phps (или wordpress-backup.zip).

Плюс этого метода в том, что если на сайте всё отображается хорошо, то и резервную копию вы получите правильную.

Связанные записи:

  1. WordPress и lighttpd Мы поставили WordPress не на Apache, как это обычно бывает,...

Метки: , , , ,



Есть комментарии (2):

  1. Надежда @ 05/09/2008 в 08:53

    Было бы хорошо, если еще и была запись в файл на хостинге:)

  2. Nau @ 08/09/2008 в 16:44

    А что делать, если есть база данных, купленная для WP, но при импорте сразу вопросительные знаки выводяться

Оставить комментарий