Мне дали файл базы данных MySQL, который мне нужно восстановить как базу данных на моем компьютере с Windows Server 2008.
Я попытался использовать MySQL Administrator, но получил следующую ошибку:
The selected file was generated by mysqldump and cannot be restored by this application.
Как мне заставить это работать?






Это должно быть так же просто, как запустить это:
mysql -u <user> -p < db_backup.dump
Если дамп одной базы данных, возможно, вам придется добавить строку вверху файла:
USE <database-name-here>;
Если это был дамп многих баз данных, операторы использования уже там.
Чтобы запустить эти команды, откройте командную строку (в Windows) и cd в каталог, где находится исполняемый файл mysql.exe (возможно, вам придется немного поискать его, это будет зависеть от того, как вы установили mysql, т.е. автономно или как часть пакета, такого как WAMP). Как только вы окажетесь в этом каталоге, вы сможете просто ввести команду, как у меня выше.
Откройте файл дампа в текстовом редакторе, его довольно легко выбрать, если есть какие-либо операторы using, то его из нескольких баз данных, если их нет, вам придется добавить одну вверху, прежде чем вы сможете запустите эту команду.
Конечно, сначала должна существовать база данных, которую вы добавляете в оператор using.
см. ответ vogs. Синтаксис: mysql -u<user> -p mydatabasename < db_backup.dump, нет необходимости в инструкции USE в начале файла.
Эта функция работает в интерфейсе командной строки MySQL. Обратите внимание, однако, что, чтобы избежать безобидной, но сбивающей с толку серии сообщений об ошибках, при установке Windows необходимо заменять обратную косую черту в строках пути на косую черту. Я также использовал tee для прикрепления файла журнала и запускал SHOW TABLES после каждого восстановления, чтобы продемонстрировать, что оно выполнено.
Предложение «Открыть файл дампа в текстовом редакторе» кажется странным. Это может работать с небольшими базами данных или текстовым редактором с буферизацией, таким как EditPad, но со всем остальным он задохнется. Было бы хорошо, если бы вам не пришлось делать этот шаг.
мой файл дампа sql находится на моем локальном компьютере, тогда каким должен быть путь к файлу дампа. Можно ли использовать путь к локальному компьютеру, потому что он не работает для меня. Должен ли я сначала загрузить файл дампа на дисковое пространство удаленного сервера?
Как упомянул @Toskan, вам не нужен USE <database-name>; в верхней части файла. Для единственного дампа базы данных вы можете указать имя базы данных в операторе mysql в качестве параметра. Ответ, выбранный как правильный, следует отредактировать с учетом этой информации, поскольку не все замечают полезные комментарии.
Когда мы создаем файл дампа с помощью mysqldump, он содержит большой сценарий SQL для воссоздания содержимого базы данных. Итак, мы восстанавливаем его, запустив клиент командной строки MySQL:
mysql -uroot -p
(где root - это наше имя администратора для MySQL), и после подключения к базе данных нам понадобятся команды для создания базы данных и чтения файла в нее:
create database new_db;
use new_db;
\. dumpfile.sql
Детали будут различаться в зависимости от того, какие параметры использовались при создании файла дампа.
Вам просто нужно запустить это:
mysql -p -u[user] [database] < db_backup.dump
Если дамп содержит несколько баз данных, вы должны опустить имя базы данных:
mysql -p -u[user] < db_backup.dump
Чтобы запустить эти команды, откройте командную строку (в Windows) и cd в каталог, где находится исполняемый файл mysql.exe (возможно, вам придется немного поискать его, это будет зависеть от того, как вы установили mysql, т.е. автономно или как часть пакета, такого как WAMP). Оказавшись в этом каталоге, вы сможете просто ввести команду.
Я заставил его работать, выполнив следующие действия ...
Откройте MySQL Administrator и подключитесь к серверу
Слева выберите "Каталоги".
Щелкните правой кнопкой мыши в нижнем левом поле и выберите «Создать новую схему».
Администратор MySQL http://img204.imageshack.us/img204/7528/adminsx9.th.gifувеличить изображение
Назовите новую схему (пример: "dbn")
Новая схема MySQL http://img262.imageshack.us/img262/4374/newwa4.th.gifувеличить изображение
Откройте командную строку Windows (cmd)
Командная строка Windows http://img206.imageshack.us/img206/941/startef7.th.gifувеличить изображение
Измените каталог на папку установки MySQL
Выполнить команду:
mysql -u root -p dbn < C:\dbn_20080912.dump
… Где «root» - это имя пользователя, «dbn» - это имя базы данных, а «C: \ dbn_20080912.dump» - это путь / имя файла mysqldump .dump
Командная строка восстановления дампа MySQL http://img388.imageshack.us/img388/2489/cmdjx0.th.gifувеличить изображение
Наслаждаться!
Вы также можете использовать меню восстановления в MySQL Administrator. Вам просто нужно открыть файл резервной копии, а затем нажать кнопку восстановления.
Если база данных, которую вы хотите восстановить, еще не существует, вам необходимо сначала создать ее.
В командной строке, если вы находитесь в том же каталоге, где находится выгруженный файл, используйте эти команды (с соответствующими заменами):
C:\> mysql -u root -p
mysql> create database mydb;
mysql> use mydb;
mysql> source db_backup.dump;
мне лично нравится этот метод. он показывает прогресс дампа, а также сколько времени занимает другой sql.
@Phrogz На самом деле вы можете указать пароль в командной строке с помощью mysql -u root -psecret без пробела, но имеет тот недостаток, что ваш пароль отображается в виде открытого текста в списках процессов и файлах журналов. Как вы предлагаете, лучше использовать пустой -p и ввести его в командной строке.
Этот метод имеет то преимущество, что позволяет устанавливать переменные на основе сеанса (например, FOREIGN_KEY_CHECKS) без необходимости редактировать файл дампа.
это все хорошо, если делать такие вещи вручную, но не работает из сценария bash.
также - если вы не знаете имя базы данных, запустите: "head -n 30 db_backup.dump", и вы должны увидеть там имя базы данных
Мне нужно было восстановить резервную копию, чтобы я мог импортировать ее в SQL Server. Я установил только MySql, но не зарегистрировал его как службу и не добавил в свой путь, так как у меня нет необходимости держать его в рабочем состоянии. Я просто использовал проводник Windows, чтобы поместить файл дампа в C: \ code \ dump.sql. Затем открыл mySql из пункта меню «Пуск». Создал БД, затем выполнил исходную команду с полным путем: mysql> create database temp mysql> use temp mysql> source c:\code\dump.sql (я добавил ее как ответ ниже, который имеет лучшее форматирование пространства.)
это лучше, поскольку вам не нужно изменять файл дампа, если он взят из одной базы данных.
Один недостаток: он не может загрузить сжатый дамп (например, сгенерированный с помощью mysqldump db | gzip -9 > dumpfile.sql.gz).
Вы не можете использовать меню Restore в MySQL Admin, если резервная копия / дамп не был создан оттуда. Хотя стоит попробовать. Если вы выберете «игнорировать ошибки» с флажком для этого, он скажет, что завершился успешно, хотя он явно завершается с импортированной только частью строк ... это с дампом, заметьте.
Если вы хотите посмотреть, как идет дамп, попробуйте следующее:
pv -i 1 -p -t -e /path/to/sql/dump | mysql -u USERNAME -p DATABASE_NAME
Вам, конечно же, понадобится установленный pv. Эта команда работает только на * nix.
Вы можете попробовать инструмент SQLyog «Выполнить сценарий SQL» для импорта файлов sql / dump.

Используя файл дампа размером 200 МБ, созданный в Linux для восстановления в Windows с mysql 5.5, я добился большего успеха с
source file.sql
подход из командной строки mysql, чем с
mysql < file.sql
подход в командной строке, который вызвал некоторую ошибку 2006 «сервер ушел» (в Windows)
Как ни странно, служба, созданная во время установки (mysql), ссылается на несуществующий файл my.ini. Я скопировал "большой" файл примера в my.ini который я уже изменил с рекомендованным увеличением.
Мои ценности
[mysqld]
max_allowed_packet = 64M
interactive_timeout = 250
wait_timeout = 250
mysql -u username -p -h localhost DATA-BASE-NAME < data.sql
посмотрите здесь - шаг 3: таким образом вам не нужен оператор USE
./mysql -u <username> -p <password> -h <host-name like localhost> <database-name> < db_dump-file
Это то же самое, что и пара других ответов, и это вопрос восьмилетней давности.
Хотя выбранный ответ очень хорош, этот ответ был для меня более полезным. Мой файл базы данных был ОГРОМНЫМ, и открытие его в Notepad ++ было кошмаром, он просто не мог справиться с размером и не позволял мне добавлять имя базы данных в начало файла sql. В этом случае возможность указать имя базы данных из командной строки на самом деле более полезна.
Команда mysql не допускает пробелов между параметрами и их аргументами. Вместо этого он должен быть -u<username>, а пароль вообще не должен указываться в командной строке.
В качестве конкретного примера предыдущего ответа:
Мне нужно было восстановить резервную копию, чтобы я мог импортировать / перенести ее в SQL Server. Я установил только MySql, но не зарегистрировал его как службу и не добавил в свой путь, так как у меня нет необходимости держать его в рабочем состоянии.
Я использовал проводник Windows, чтобы поместить файл дампа в C: \ code \ dump.sql. Затем открыл MySql из пункта меню «Пуск». Создал БД, затем выполнил исходную команду с полным путем, например:
mysql> create database temp
mysql> use temp
mysql> source c:\code\dump.sql
Однострочная команда для восстановления сгенерированного SQL из mysqldump
mysql -u <username> -p<password> -e "source <path to sql file>;"
например mysql -u root -p12345678 -e "source /tmp/backup.sql;"
Не используйте такой пароль, просто используйте -p, и командная строка предложит вам безопасный запрос пароля после того, как вы нажмете Enter.
Когда вы можете позволить себе интерактивную подсказку, вы правы. Когда вы не можете (например, автоматический скрипт), вы, вероятно, будете использовать его встроенным
Запускаем команду для входа в БД
# mysql -u root -p
Введите пароль для пользователя. Затем создайте новую БД.
mysql> create database MynewDB;
mysql> exit
И сделайте exit.Afetr. Выполните эту команду
# mysql -u root -p MynewDB < MynewDB.sql
Затем войдите в базу данных и введите
mysql> show databases;
mysql> use MynewDB;
mysql> show tables;
mysql> exit
Вот и все ........ Ваш дамп будет восстановлен из одной БД в другую.
Или есть альтернативный способ восстановления дампа
# mysql -u root -p
Затем войдите в базу данных и введите
mysql> create database MynewDB;
mysql> show databases;
mysql> use MynewDB;
mysql> source MynewDB.sql;
mysql> show tables;
mysql> exit
Вы можете запускать перетаскивание и создавать команды на вкладке запроса.
DROP DATABASE `your_db_name`;
CREATE SCHEMA `your_db_name`;
Предполагая, что у вас уже создана пустая база данных, вы также можете восстановить базу данных из командной строки следующим образом:
mysql databasename < backup.sql
Я использую «Клиент командной строки MySQL»? Я никогда раньше не использовал MySQL.