Импортировать файл SQL в mysql


193

У меня есть база данных под названием nitm. Я не создавал там таблиц. Но у меня есть файл SQL, содержащий все необходимые данные для базы данных. Файл nitm.sqlнаходится вC:\ drive . Этот файл имеет размер около 103 МБ. Я использую вамп-сервер.

Я использовал следующий синтаксис в консоли MySQL для импорта файла:

mysql>c:/nitm.sql;

Но это не сработало.



Ответы:


409

Из консоли mysql:

mysql> use DATABASE_NAME;

mysql> source path/to/file.sql;


убедитесь, что перед путем нет косой черты, если вы имеете в виду относительный путь ... мне потребовалось время, чтобы понять это! лол


36
Вам не нужна косая черта перед путем, если вы делаете относительную ссылку. Если вы идете от корня, то вы это сделаете, то есть/home/user/file.sql
Уэс Джонсон

5
Как жаль, что нет возможности добавить ответ в избранное :(
baldrs

4
В Chrome они называются закладками, и вы можете просто щелкнуть звездочку в адресной строке;)
Эндрю

2
@ ArseniuszŁozicki добавьте вопрос, и вы сможете найти ответ :) это то, что я делаю.
mandza

2
Просто чтобы добавить к этому ответу, что это path/to/file.sqlпуть к локальной файловой системе, в котором находится клиент mysql . Бывают случаи, когда сервер MySQL ожидает, что путь будет на стороне сервера, IE, SELECT ... INTO OUTFILEкоторый помещает файл в путь на сервере MySQL!
Деви

90

Наконец я решил проблему. Я поместил файл `nitm.sql` в файл` bin` папки `mysql` и использовал следующий синтаксис.

C:\wamp\bin\mysql\mysql5.0.51b\bin>mysql -u root nitm < nitm.sql

И это сработало.


8
Это не из консоли mysql, как просил OP, а из консоли в mysql. Ответ Роберта Энтони Трибианы описывает, как это сделать с консоли mysql.
halfpastfour.am

Это не точный способ решения проблемы, это не решение.
Ашиш Ратан,

4
Вы, ребята, знаете, что это ОП ответил на это?
Уэс,

Если вашему mysql нужен пароль, то этот метод не сработает, вам нужен главный ответ @d -_- b
shellbye

52

Если вы используете Wamp, вы можете попробовать это. Просто use your_Database_nameсначала введите .

  1. Щелкните значок вашего сервера Wamp, затем найдите и MYSQL > MSQL Consoleзапустите его.

  2. Если у вас нет пароля, просто нажмите Enter и введите:

    mysql> use database_name;
    mysql> source location_of_your_file;
    

    Если у вас есть пароль, вам будет предложено ввести пароль. Сначала введите свой пароль, затем введите:

    mysql> use database_name;
    mysql> source location_of_your_file;
    

location_of_your_file должен выглядеть C:\mydb.sql

поэтому рекомендуется mysql> source C: \ mydb.sql;

Этот вид импорта дампа sql очень полезен для БОЛЬШОГО ФАЙЛА SQL.

Я скопировал свой файл mydb.sqв каталогC: Он должен быть заглавной C: для запуска

вот и все.


1
Этот ответ кажется специфичным для WAMP, в то время как показанный код работает в любой среде с MySQL, где вы можете получить доступ к MySQL через терминал или консоль.
halfpastfour.am

26

В Windows, если приведенное выше предложение дает вам ошибку (файл не найден или неизвестен db), вы можете удвоить косые черты:

В консоли mysql:

mysql> use DATABASE_NAME;

mysql> source C://path//to//file.sql;

1
На моем компьютере с Windows у меня работала одинарная косая черта.
Манодж Шреста

17

Хорошо, я использую Linux, но я думаю, что это справедливо и для Windows. Вы можете сделать это прямо из командной строки.

> mysql -u <user name> -p<password> <database name> < sqlfilename.sql

Или из командной строки mysql вы можете использовать:

mysql>source sqlfilename.sql

Но у обоих этих подходов есть свои преимущества в отображаемых результатах. При первом подходе сценарий завершается, как только обнаруживает ошибку. И что самое приятное, он сообщает вам точный номер строки в исходном файле, где произошла ошибка. Однако он ТОЛЬКО отображает ошибки. Если ошибок не было, скрипт НИЧЕГО не отображает. Что может немного нервировать. Потому что чаще всего вы запускаете скрипт с целым набором команд.

Теперь второй подход (из командной строки mysql) имеет то преимущество, что он отображает сообщение для каждой отдельной команды MySQL в сценарии. При обнаружении ошибок он отображает сообщение об ошибке mysql, но продолжает выполнение сценариев. Это может быть хорошо, потому что вы можете вернуться и исправить все ошибки перед повторным запуском скрипта. Обратной стороной является то, что он НЕ отображает номера строк в скрипте, где были обнаружены ошибки. Это может быть немного больно. Но сообщения об ошибках настолько информативны, что вы, вероятно, сможете понять, в чем проблема.

Я, например, предпочитаю подход непосредственно из командной строки ОС.



7

Вы почти там пользуетесь

mysql> \. c:/nitm.sql;

Вы также можете получить помощь по

mysql> \?

1
Это не сработало. Когда я использовал mysql> \. c: /nitm.sql; , это выдало ошибку, например Failed to open file 'c: \ nitm.sql;', error: 2
kushalbhaktajoshi 01

Вы пробовали варианты этого? Некоторые приложения уважают C: \ nitm.sql
Lmwangi 01

Также обратите внимание, что точка с запятой в конце не требуется. Так что удали его. Другой вариант - "cd c:", затем попробуйте "\. Nitm.sql"
Lmwangi 01

1
Пожалуйста, подумайте, прежде чем печатать. cd c: - это команда для командной строки DOS, а не для консоли mySql.
kushalbhaktajoshi 01

1
mysql> \. ~/Downloads/backups/file.sql отлично работал в mysql> и coosalтакже работал с терминальным ответом.
gmuhammad 02

6

Для localhost на XAMPP. Откройте окно cmd и введите

cd C:\xampp\mysql\bin
mysql.exe -u root -p

Внимание! Без точки с запятой после -p Введите свой пароль и введите

use database_name;

для выбора нужной базы данных.

Проверьте, есть ли там ваш стол

show tables;

Импорт из вашего sql файла

source sqlfile.sql;

Я поместил свой файл в папку C: \ xampp \ mysql \ bin, чтобы не путаться с местоположением файла sql.



3

Не забывайте использовать

charset utf8

Если ваш sql файл находится в utf-8 :)

Итак, вам нужно сделать:

cmd.exe

mysql -u корень

mysql> кодировка utf8

mysql> используйте mydbname

mysql> источник C: \ myfolder \ myfile.sql

Удачи ))


3

В Linux я перешел в каталог, содержащий файл .sql, перед запуском mysql. Системный курсор теперь находится в том же месте, что и файл, и путь вам не понадобится. Используйте исходный myData.sql, где моя дата заменена именем вашего файла.

cd whatever directory

mysql - p

подключить targetDB

source myData.sql

Выполнено


2

из командной строки (cmd.exe, а не из оболочки mysql) попробуйте что-то вроде:

type c:/nite.sql | mysql -uuser -ppassword dbname

Я не создавал никакого пароля для базы данных, поэтому в поле пароля он пуст. И я использовал приведенный выше синтаксис, например, c: /nitm.sql | mysql -u root -p nitm, но это тоже не сработало. Вы можете помочь мне с этим еще?
kushalbhaktajoshi 01

Пропуск -p тоже не сработал. Эта ошибка типа «c:» не распознается как внутренняя или внешняя команда, работающая программа или командный файл.
kushalbhaktajoshi 01

2

Ваш дамп содержит функции, которые не поддерживаются в вашей версии MySQL? Вы также можете попробовать удалить начальные (и конечные) операторы SET с комментариями MySQL.

Я не знаю, исходит ли ваш дамп из Linux-версии MySQL (окончания строк)?


Я уже удалил SET-операторы с комментариями mysql. Но все равно возникает ошибка.
kushalbhaktajoshi 01

Вы можете попробовать войти в командную оболочку MySQL и использовать оператор then: "source c: \ nite.sql". Не забудьте выбрать правильную базу данных.
Maickel 01

Я очень ценю твои старания. Спасибо.
kushalbhaktajoshi 01

2

Я установил свой wamp-сервер на диск D:, поэтому вам нужно перейти по следующему пути из командной строки ur -> (и если вы установили ur wamp на диске c:, просто замените d: wtih c: здесь)

D:\>cd wamp
D:\wamp>cd bin
D:\wamp\bin>cd mysql
D:\wamp\bin\mysql>cd mysql5.5.8 (whatever ur verserion will be displayed here use keyboard Tab button)
D:\wamp\bin\mysql\mysql5.5.8>cd bin
D:\wamp\bin\mysql\mysql5.5.8\bin>mysql -u root -p password db_name < "d:\backupfile.sql"

здесь root - это пользователь моего phpmyadmin, пароль - это пароль для phpmyadmin, поэтому, если вы не установили пароль для root, просто ничего не введите в этом месте, db_name - это база данных (для которой база данных ur делает резервную копию), backupfile.sql - это файл, из которого вы хотите создать резервную копию вашей базы данных, и вы также можете изменить расположение файла резервной копии (d: \ backupfile.sql) с любого другого места на вашем компьютере


1
mysql>c:/nitm.sql;

Это приведет к записи вывода команды mysql в 'nitm.sql;' (Что должен делать символ ';'?) Если у вас есть копия исходного файла (до того, как вы его перезаписали), тогда:

mysql < c:/nitm.sql

Это тоже не сработало. Это выдало ошибку, например ERROR 1064 <42000>: у вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySql, чтобы найти правильный синтаксис для использования рядом с 'mysql <c: /nitm.sql' в строке 1
kushalbhaktajoshi 01

1

Экспорт конкретных баз данных

 djimi:> mysqldump --user=root --host=localhost --port=3306 --password=test -B CCR KIT >ccr_kit_local.sql

это экспортирует базы данных CCR и KIT ...

Импортировать всю экспортированную БД в конкретный экземпляр Mysql (вы должны быть там, где находится ваш файл дампа)

djimi:> mysql --user=root --host=localhost --port=3306 --password=test < ccr_kit_local.sql

0

В ОС Windows у меня работают следующие команды.

mysql>Use <DatabaseName>
mysql>SOURCE C:/data/ScriptFile.sql;

Имя файла нельзя заключать в одинарные или двойные кавычки. Путь будет содержать '/' вместо '\'.


0

Для тех из вас, кто борется с этим, пробует все возможные ответы, которые вы можете найти на SO. Вот что у меня сработало на VPS под управлением Windows 2012 R2:

  1. Поместите свой sql-файл туда, где для меня находится корзина, в C:\Program Files\MySQL\MySQL Server 8.0\bin

  2. Откройте командную строку Windows (cmd)

  3. Бегать C:\Program Files\MySQL\MySQL Server 8.0\bin > mysql -u [username] -p
  4. Введите ваш пароль
  5. Команда выполнения use [database_name] ;
  6. Импортируйте ваш файл с источником команд C://Program Files//MySQL//MySQL Server 8.0//bin//mydatabasename.sql

Это сделало это для меня, как и все остальное. Это может вам тоже помочь.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.