Невозможно импортировать файл sql, экспортированный из phpMyAdmin.Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Невозможно импортировать файл sql, экспортированный из phpMyAdmin.

Сообщение Anonymous »

Хорошо, такая ситуация. Я создал резервную копию своей базы данных, зайдя в phpMyAdmin, а затем, не выбирая какую-либо базу данных, нажав «Экспорт». Теперь, когда я пытаюсь импортировать экспортированный файл sql в новую установку MySQL, я получаю такие ошибки, как
http://pastebin.com/vDHdG2T6 (использовал Pastebin, так как он довольно длинный)

Я знаю, что вместо этого мне следовало использовать mysqldump, так как он пропустил бы таблицу Information_schema.
Есть ли у вас какие-либо предложения, как решить эту проблему или импортировать этот файл без необходимости редактировать миллион строк файл?

Я также пробовал импортировать файл следующим образом:
mysql -u root -p -f -h localhost < Documents/localhost.sql
Это действительно импортировало базы данных, но многие из них были повреждены, отсутствовали таблицы и тому подобное... Я использовал -f, чтобы работа продолжалась независимо от ошибок.

Заранее спасибо!

РЕДАКТИРОВАТЬ:

Спасибо, ребята, за предложения, я уверен, что вы были на правильном пути. Однако тем временем я испортил свой файл резервной копии, поэтому мне пришлось написать небольшой PHP-код, чтобы извлечь нужные мне строки.
Вот на случай, если у кого-то возникнет такая же проблема:

Код: Выделить всё

$data = file_get_contents('import.sql');

if (! isset($_GET['db'])) {
//list databases
echo '[list]';
preg_match_all("/Database: `(.*?)`/", $data, $dbs);

foreach ($dbs[1] as $database){
echo "[*][url=\]$database[/url]";
}
echo '[/list]';
} else {
$database = $_GET['db'];
//only get the queries for that db
$data = explode(PHP_EOL, $data);
$buffer = array();
$buffer_started = false;

foreach ($data as $key => $row){

if (preg_match("/Database: `.*?`/", $row) && $buffer_started) {
array_pop($buffer);
break;
}

if (preg_match("/Database: `$database`/", $row)) {
$buffer_started = true;
continue;
}

if ($buffer_started) {
array_push($buffer, $row);
}

unset($data[$key]);
}

echo ''.implode("\n", $buffer).'';
}
Сохраните это как index.php и поместите свой sql в import.sql в том же каталоге, он отобразит список баз данных, найденных в файле, и просто нажмите на ту, которую вы хотите, и он отобразит запросы в текстовой области.

Удачи.

Подробнее здесь: https://stackoverflow.com/questions/963 ... phpmyadmin
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»