Как импортировать БД без phpMyAdmin и консоли

27 февраля 2017 168

Странно, но некоторых такая задача вводит в тупик. А ведь для импорта базы данных MySQL достаточно FTP-доступа и интерпретатора PHP, который есть практически на любом хостинге.

Конечно, владельцам сайтов сложно представить такую дикую ситуацию. А вот фрилансеры очень даже часто оказываются в таком положении, когда проще применить какой-то лайфхак, чем объяснять заказчику все нюансы, выносить ему мозг сложной терминологией.

Итак, если нужно импортировать дамп базы MySQL, а доступа к панели управления хостингом нет — не беда. Можно обойтись без phpMyAdmin, без SSH, и даже не придётся устанавливать никакого дополнительно софта. Мне приходилось видеть как некоторые в таких случаях использовали Sypex Dumper, про который я года три назад рассказывал в статье про обход ограничений phpMyAdmin при импорте больших баз данных MySQL.

Всё очень просто, задача решается небольшим PHP-скриптом. 

Подключаемся к серверу по FTP и создаём файл. Назовём его import.php, например. Копируем в него этот код и меняем все переменные на свои. Чтобы не заморачиваться с путями, в эту же директорию закачиваем и дамп БД, который будем импортировать.

<?php
$filename = 'dump.sql'; // Имя файла дампа
$mysql_host = 'localhost'; // Адрес сервера MySQL
$mysql_username = 'root'; // Имя пользователя MySQL
$mysql_password = 'password'; // Пароль MySQL
$mysql_database = 'base'; // Имя БД

mysql_connect($mysql_host, $mysql_username, $mysql_password) or die('Error connecting to MySQL server: ' . mysql_error());
mysql_select_db($mysql_database) or die('Error selecting MySQL database: ' . mysql_error());

$templine = '';
$lines = file($filename);
foreach ($lines as $line){
	if (substr($line, 0, 2) == '--' || $line == '')
		continue;
	$templine .= $line;
	if (substr(trim($line), -1, 1) == ';'){
		mysql_query($templine) or print('Error performing query \'<strong>' . $templine . '\': ' . mysql_error() . '<br /><br />');
		$templine = '';
	}
}
echo "Таблицы успешно импортированы";
?>

Если возникнут проблемы с кодировкой, её нужно задать принудительно. Например, для UTF-8 перед mysql_query($templine) можно добавить такие строки:

mysql_query("SET NAMES 'utf8'"); 
mysql_query("SET CHARACTER SET 'utf8'");
mysql_query("SET SESSION collation_connection = 'utf8_general_ci'");

Открываем браузер, в адресной строке вводим URL созданного файла и запускам его. Если всё сделано правильно, дамп импортируется в БД.

Автор: Иван Данилин

Практикующий веб-разработчик, специализируюсь на платформе WordPress.

Комментарии

Разгоните свой WordPress

Проверенный хостинг для ваших сайтов на Вордпресс

Подробнее