У меня есть файл .sql с экспортом из phpMyAdmin. Я хочу импортировать его на другой сервер с помощью командной строки.

У меня установлена ​​Windows Server 2008 R2. Я поместил файл .sql на диск C и попробовал эту команду

database_name < file.sql

Это не работает. Я получаю синтаксические ошибки.

  • Как я могу без проблем импортировать этот файл?
  • Мне нужно сначала создать базу данных?
2320
Jaylen 16 Июл 2013 в 04:43

30 ответов

Лучший ответ

Пытаться:

mysql -u username -p database_name < file.sql

Проверьте Параметры MySQL.

Примечание-1: лучше использовать полный путь к файлу SQL file.sql.

Примечание-2: используйте -R и --triggers, чтобы сохранить подпрограммы и триггеры исходной базы данных. По умолчанию они не копируются.

Примечание-3 . Возможно, вам придется создать (пустую) базу данных из mysql, если она еще не существует и экспортированный SQL не содержит CREATE DATABASE (экспортированный с --no-create-db или вариант -n), прежде чем вы сможете его импортировать.

4298
bansi 28 Ноя 2018 в 06:31

Решение, которое сработало для меня, приведено ниже:

Use your_database_name;
SOURCE path_to_db_sql_file_on_your_local;
47
Peter Mortensen 21 Мар 2018 в 18:31
  1. Откройте командную строку MySQL
  2. Введите путь к вашему каталогу bin mysql и нажмите Enter
  3. Вставьте свой файл SQL в папку bin сервера mysql.
  4. Создайте базу данных в MySQL.
  5. Используйте ту конкретную базу данных, в которую вы хотите импортировать файл SQL.
  6. Введите source databasefilename.sql и Enter .
  7. Ваш файл SQL успешно загружен.
62
Peter Mortensen 19 Мар 2015 в 18:10

Если у вас уже есть база данных, используйте следующее для импорта файла dump или sql:

mysql -u username -p database_name < file.sql

Если вам не нужно создавать соответствующую базу данных (пустую) в MySQL, для этого сначала войдите в консоль MySQL, выполнив следующую команду в терминале или в cmd

mysql -u userName -p;

И когда будет предложено ввести пароль.

Далее создайте базу данных и используйте ее:

mysql>create database yourDatabaseName;
mysql>use yourDatabaseName;

Затем импортируйте файл sql или dump в базу данных из

mysql> source pathToYourSQLFile;

Примечание: если ваш терминал находится не в том месте, где существует файл dump или sql, используйте относительный путь, указанный выше.

67
Peter Mortensen 10 Июл 2019 в 14:40

Мы можем использовать эту команду для импорта SQL из командной строки:

mysql -u username -p password db_name < file.sql

Например, если имя пользователя - root, а пароль - password. И у вас есть имя базы данных как bank, а файл SQL - bank.sql. Затем просто сделайте вот так:

mysql -u root -p password bank < bank.sql

Помните, где находится ваш файл SQL. Если ваш файл SQL находится в папке / каталоге Desktop, перейдите в каталог рабочего стола и введите следующую команду:

~ ? cd Desktop
~/Desktop ? mysql -u root -p password bank < bank.sql

И если вы находитесь в каталоге Project, а ваш файл SQL находится в каталоге Desktop. Если вы хотите получить к нему доступ из каталога Project, вы можете сделать это следующим образом:

~/Project ? mysql -u root -p password bank < ~/Desktop/bank.sql
81
Peter Mortensen 19 Мар 2015 в 17:51

Самый простой способ импортировать в вашу схему:

Войдите в mysql и выполните указанные ниже команды.

mysql> use your_db_name;

mysql> source /opt/file.sql;
100
Ammad 16 Июл 2019 в 18:38

Среди всех ответов на указанную выше проблему это лучший:

 mysql> use db_name;
 mysql> source file_name.sql;
161
Manoj Kumar 18 Авг 2016 в 12:12

Что касается времени, необходимого для импорта огромных файлов: что наиболее важно, это занимает больше времени, потому что по умолчанию MySQL настроен на autocommit = true. Вы должны отключить это перед импортом файла, а затем проверить, как импорт работает как драгоценный камень.

Вам просто нужно сделать следующее:

mysql> use db_name;

mysql> SET autocommit=0 ; source the_sql_file.sql ; COMMIT ;
385
Hexaholic 13 Окт 2016 в 14:53

Обычно mysqldump используется для резервного копирования всего база данных:

shell> mysqldump db_name > backup-file.sql

Вы можете загрузить файл дампа обратно на сервер следующим образом:

UNIX

shell> mysql db_name < backup-file.sql

То же самое в командной строке Windows :

mysql -p -u [user] [database] < backup-file.sql

< Сильный > PowerShell

C:\> cmd.exe /c "mysql -u root -p db_name < backup-file.sql"

Командная строка MySQL

mysql> use db_name;
mysql> source backup-file.sql;
863
Black 27 Май 2018 в 17:54

Для информации у меня просто был root + по умолчанию без пароля. Это не сработало со всеми предыдущими ответами.

  • Я создал нового пользователя со всеми привилегиями и паролем. Это сработало.

  • -ppassword БЕЗ ПРОБЕЛА.

7
Peter Mortensen 10 Июл 2019 в 14:46

Аналогично ответ владкраса в Как импортировать файл SQL с помощью командной строки в MySQL? .

Ключевые отличия для меня:

  1. База данных должна существовать в первую очередь
  2. Между -p и паролем не должно быть пробелов

shell> mysql -u root -ppassword #note: no space between -p and password
mysql> CREATE DATABASE databasename;
mysql> using databasename;
mysql> source /path/to/backup.sql

Я использую Fedora 26 с MariaDB.

7
Peter Mortensen 10 Июл 2019 в 14:42

Импортировать в базу данных:

mysql -u имя пользователя -p имя_базы_данных

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

mysqldump -u имя пользователя -p имя_базы_данных> / путь к файлу / имя_файла.sql

После этих команд появится запрос на ввод пароля MySQL.

7
Peter Mortensen 10 Июл 2019 в 14:37

Ввод учетных данных в командной строке - не лучшая идея. Вышеупомянутые ответы хороши, но не упоминают

mysql --defaults-extra-file=etc/myhost.cnf database_name < file.sql

Где etc / myhost.cnf - это файл, содержащий хост, пользователя и пароль, и вы избегаете раскрытия пароля в командной строке. Вот образец,

[client]
host=hostname.domainname
user=dbusername
password=dbpassword
7
ChuckCottrill 25 Фев 2017 в 01:18

Я подумал, что это может быть полезно для тех, кто использует Mac OS X:

/Applications/xampp/xamppfiles/bin/mysql -u root -p database < database.sql

Замените xampp на mamp или другие веб-серверы.

7
Peter Mortensen 19 Мар 2015 в 17:58

Следующая команда работает для меня из командной строки (cmd) на Windows 7 на WAMP.

d:/wamp/bin/mysql/mysql5.6.17/bin/mysql.exe -u root -p db_name < database.sql
8
Peter Mortensen 19 Мар 2015 в 18:14

Вы можете попробовать этот запрос.

Экспорт:

mysqldump -u username –-password=your_password database_name > file.sql

Импортировать:

mysql -u username –-password=your_password database_name < file.sql

И подробно по этой ссылке:

https://chartio.com/resources/tutorials/importing-from-and-exporting-to-files-using-the-mysql-command-line/

9
Md Shariful Islam 11 Апр 2019 в 12:24

Добавьте параметр --force :

mysql -u username -p database_name --force < file.sql
9
Peter Mortensen 2 Июл 2016 в 09:40

Хотя в большинстве ответов здесь просто упоминается простая команда

mysql -u пользователь_базы_данных -p [имя_бд] <файл_базы_данных.sql

Сегодня довольно часто базы данных и таблицы имеют utf8-сопоставление, когда этой команды недостаточно. Имея utf8-сопоставление в экспортируемых таблицах, необходимо использовать эту команду:

mysql -u пользователь_базы_данных -p --default-character-set = utf8 [имя_базы_данных] <файл_базы_данных.sql

Surley, это работает и для других кодировок, как показать правильную нотацию можно увидеть здесь:

https://dev.mysql.com/doc/refman/5.7/en/show-collation.html

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

Есть еще другие параметры для команды, которые перечислены и объяснены здесь:

https://dev.mysql.com/doc/refman/5.7/en/mysql-command-options.html

Если вы используете другую версию базы данных, подумайте также о поиске соответствующей версии руководства. Указанные ссылки относятся к MySQL версии 5.7.

РЕДАКТИРОВАТЬ:
Те же параметры работают и для mysqldump. Таким образом, хотя команды для экспорта и импорта различны, упомянутые параметры - нет.

10
David 24 Ноя 2020 в 21:52

Чтобы импортировать базу данных, используйте следующую команду.

  mysql> create new_database;
  mysql> use new_database;
  mysql> source (Here you need to import the path of the sql file);
 eg:
  mysql> source E:/test/dump.sql;

Вам нужно использовать косую черту (/) даже в Windows, например E: /test/dump.sql вместо E: \ test \ dump.sql

Или двойная обратная косая черта (\\) из-за экранирования, то есть E: \\ test \\ dump.sql

11
Zdeněk Gromnica 9 Фев 2021 в 02:26

Перейдите в каталог, в котором стоит MySQL.

 c:\mysql\bin\> mysql -u username -p password database_name <
 filename.sql

Также, чтобы выгрузить все базы данных, используйте опцию -all-databases, и больше не нужно указывать имя базы данных.

mysqldump -u username -ppassword –all-databases > dump.sql

Или вы можете использовать для этого некоторые клиенты с графическим интерфейсом, например SQLyog.

11
Peter Mortensen 19 Мар 2015 в 17:49

Использование:

mysql -u root -p password -D database_name << import.sql

Для получения подробной информации используйте справку MySQL - mysql --help.

Думаю, в нашем контексте это будут полезные варианты:

[~]$ mysql --help
mysql  Ver 14.14 Distrib 5.7.20, for osx10.12 (x86_64) using  EditLine wrapper
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
Usage: mysql [OPTIONS] [database]
  -?, --help          Display this help and exit.
  -I, --help          Synonym for -?
  --bind-address=name IP address to bind to.
  -D, --database=name Database to use.
  --delimiter=name    Delimiter to be used.
  --default-character-set=name Set the default character set.
  -f, --force         Continue even if we get an SQL error.
  -p, --password[=name] Password to use when connecting to server.
  -h, --host=name     Connect to host.
  -P, --port=#        Port number to use for connection or 0 for default to, in order of preference, my.cnf, $MYSQL_TCP_PORT, /etc/services, built-in default (3306).
  --protocol=name     The protocol to use for connection (tcp, socket, pipe,
  -s, --silent        Be more silent. Print results with a tab as separator, each row on new line.
  -v, --verbose       Write more. (-v -v -v gives the table output format).
  -V, --version       Output version information and exit.
  -w, --wait          Wait and retry if connection is down.

Что интересно, если мы импортируем большую базу данных и не имеем индикатора выполнения. Используйте Pipe Viewer и наблюдайте за передачей данных по каналу

Для Mac: brew install pv

Для Debian / Ubuntu: apt-get install pv.

Для других см. pv - Pipe Viewer .

pv import.sql | mysql -u root -p password -D database_name

1.45GiB 1:50:07 [339.0KiB/s]   [=============>      ] 14% ETA 11:09:36
1.46GiB 1:50:14 [ 246KiB/s]     [=============>      ] 14% ETA 11:09:15
1.47GiB 1:53:00 [ 385KiB/s]     [=============>      ] 14% ETA 11:05:36
13
Peter Mortensen 10 Июл 2019 в 14:39

Импортировать базу данных

  1. Ехать на машине:

     command: d:
    
  2. Логин MySQL

     command: c:\xampp\mysql\bin\mysql -u root -p
    
  3. Он запросит pwd. Введите его:

     pwd
    
  4. Выберите базу данных

     use DbName;
    
  5. Укажите имя файла

     \.DbName.sql
    
15
Community 20 Июн 2020 в 09:12

Вам не нужно указывать имя базы данных в командной строке, если файл .sql содержит операторы CREATE DATABASE IF NOT EXISTS db_name и USE db_name.

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

16
Peter Mortensen 2 Июл 2016 в 09:37

Для одновременного импорта нескольких файлов SQL используйте это:

# Unix-based solution
for i in *.sql;do mysql -u root -pPassword DataBase < $i;done

Для простого импорта:

# Unix-based solution
mysql -u root -pPassword DataBase < data.sql

Для WAMP:

#mysqlVersion replace with your own version
C:\wamp\bin\mysql\mysqlVersion\bin\mysql.exe -u root -pPassword DataBase < data.sql

Для XAMPP:

C:\xampp\mysql\bin\mysql -u root -pPassword DataBase < data.sql
18
Peter Mortensen 21 Мар 2018 в 18:32

Для экспорта базы данных:

mysqldump -u username -p database_name > file.sql

Для импорта базы данных:

mysql -u username -p database_name < file.sql
19
Das_Geek 17 Фев 2020 в 14:50
mysql --user=[user] --password=[password] [database] < news_ml_all.sql
22
Ram Sharma 8 Янв 2015 в 14:09

Чтобы импортировать отдельную базу данных, используйте следующую команду.

mysql -u username -p password dbname < dump.sql

Чтобы импортировать несколько дампов базы данных, используйте следующую команду.

mysql -u username -p password < dump.sql
33
Adeleke Akinade 8 Фев 2018 в 17:50

Думаю, стоит упомянуть, что вы также можете загрузить файл gzip (сжатый) с помощью zcat, как показано ниже:

zcat database_file.sql.gz | mysql -u username -p -h localhost database_name
37
Francesco Casula 1 Мар 2017 в 10:55

Перейдите в каталог, в котором находится исполняемый файл MySQL. -u для имени пользователя и -p для запроса пароля:

C:\xampp\mysql\bin>mysql -u username -ppassword databasename < C:\file.sql
40
Peter Mortensen 19 Мар 2015 в 17:57

Чтобы выгрузить базу данных в файл SQL, используйте следующую команду.

mysqldump -u username -p database_name > database_name.sql

Чтобы импортировать файл SQL в базу данных (убедитесь, что вы находитесь в том же каталоге, что и файл SQL, или укажите полный путь к файлу), выполните:

mysql -u username -p database_name < database_name.sql
43
Peter Mortensen 10 Июл 2019 в 14:44