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

1437

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

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

database_name < file.sql

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

  • Как я могу импортировать этот файл без проблем?
  • Нужно ли сначала создавать базу данных?
Показать ещё 1 комментарий
Теги:
import
command-line

40 ответов

2949
Лучший ответ

Пытаться:

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) прежде чем вы сможете импортировать его.

  • 2
    Когда я запускаю файл из такой программы, как Toad, я не получаю ошибки, но когда я запускаю его из командной строки, я получаю ошибку, о которой упоминал
  • 0
    Я думаю, что мы должны запустить эту команду как пользователь root.
Показать ещё 19 комментариев
605

Обычное использование 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;
  • 0
    @Mike Вы пытаетесь запустить его в командной строке mysql> ? Вы должны использовать оболочку вместо.
  • 0
    Как мне использовать Shell? Я использую mysql5.6 на Windows Server 2008
Показать ещё 6 комментариев
255

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

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

mysql> use db_name;

mysql> SET autocommit=0 ; source the_sql_file.sql ; COMMIT ;
  • 5
    Есть ли способ сделать это в одной командной строке команды mysql, используемой для импорта?
  • 0
    Лучший ответ inho. Это была source команда, которую я забыл. Большинство из нас хотят сделать это , пока мы вошли в систему как отдельную команду среди других команд, а не стандартный логин> инъекционные> выход из системы Oneliner в верхней части Google SERPs.
Показать ещё 4 комментария
86

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

 mysql> use db_name;
 mysql> source file_name.sql;
  • 0
    не удалось сообщить выше при ошибке, что БД уже существует, но это, кажется, работает
57

Мы можем использовать эту команду для импорта 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/directory, затем зайдите в каталог рабочего стола и введите команду следующим образом:

~ ? 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
  • 16
    Между -p и password не должно быть пробела
  • 0
    Jap. Это не будет работать. Правильно будет mysql -u root -p"password" bank < bank.sql
Показать ещё 3 комментария
49
  • Откройте командную строку MySQL
  • Введите путь к вашему директорию bin mysql и нажмите Enter
  • Вставьте ваш файл SQL в папку bin сервера mysql.
  • Создать базу данных в MySQL.
  • Используйте эту конкретную базу данных, где вы хотите импортировать файл SQL.
  • Введите source databasefilename.sql и Enter
  • Успешно загружается ваш файл SQL.
  • 1
    Введите путь к вашей папке MySQL и нажмите
38

Если у вас уже есть база данных, используйте для импорта файл 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, используйте относительный путь выше.

38

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

Use your_database_name;
SOURCE path_to_db_sql_file_on_your_local;
  • 0
    Это сработало для меня, используя MySQL Command Line Client, после помещения моего файла sql в соответствующий проводник Windows / каталог просмотра каталога. Спасибо
  • 3
    Немного медленно, но не останавливается между ними и не говорите, что сервер MySQL ушел.
31

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

C:\xampp\mysql\bin>mysql -u username -ppassword databasename < C:\file.sql
  • 3
    Я думаю, что это было бы более полезно для ФП и для дальнейших вопросов, когда вы добавите некоторые пояснения к своему намерению.
  • 0
    Это будет работать, только если у вас есть mysql.exe, определенный в ваших переменных среды Windows. Если нет, вы должны ввести весь путь к файлу mysql.exe. И Ваш синтаксис неправильный. Например: "d: \ wamp \ bin \ mysql \ mysql5.5.8 \ bin \ mysql.exe -u YOUR_USERNAME -p DB_NAME <FILENAME.SQL" Дополнительная информация здесь: wpy.me/en/blog/…
22

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

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

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

mysql -u username -p password < dump.sql
  • 0
    mysql -u username -p пароль <dump.sql очень помог мне, спасибо!
19

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

zcat database_file.sql.gz | mysql -u username -p -h localhost database_name
18

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

mysqldump -u username -p database_name > database_name.sql

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

mysql -u username -p database_name < database_name.sql
14
mysql --user=[user] --password=[password] [database] < news_ml_all.sql
12

Для импорта нескольких файлов 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
11

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

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

10

Импорт базы данных

  • Перейдите на диск:

    command: d:
    
  • Вход в MySQL

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

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

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

    \.DbName.sql
    
9

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

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

mysql> use your_db_name;

mysql> source /opt/file.sql;
  • 0
    Это будет работать без команды «use» для дампов с многопользовательской базой данных.
  • 1
    Я пытался импортировать дамп из базы данных с другим именем, но с той же структурой, правильный ответ, выбранный автором, не сработал, он создал новую базу данных с именем базы данных в файле дампа. Этот ответ прямо здесь сделал то, что я хотел, спасибо человек
Показать ещё 1 комментарий
8

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

mysql -u username -p database_name --force < file.sql
7

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

d:/wamp/bin/mysql/mysql5.6.17/bin/mysql.exe -u root -p db_name < database.sql
7

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

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

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

7

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

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

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

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

Или вы можете использовать некоторые GUI-клиенты, такие как SQLyog, чтобы это сделать.

5

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

mysql -u database_user -p [db_name] <database_file.sql

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

mysql -u database_user -p - набор символов по умолчанию = utf8 [db_name] <database_file.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.

5

Я продолжал сталкиваться с проблемой, когда база данных не была создана.

Я исправил его так:

mysql -u root -e "CREATE DATABASE db_name"
mysql db_name --force < import_script.sql
5

Для резервного копирования создайте файл BAT и запустите этот файл BAT с помощью Task Scheduler. Он будет делать резервную копию базы данных; просто скопируйте следующую строку и вставьте Notepad, а затем сохраните файл .bat и запустите его в своей системе.

@echo off
for /f "tokens=1" %%i in ('date /t') do set DATE_DOW=%%i
for /f "tokens=2" %%i in ('date /t') do set DATE_DAY=%%i
for /f %%i in ('echo %date_day:/=-%') do set DATE_DAY=%%i
for /f %%i in ('time /t') do set DATE_TIME=%%i
for /f %%i in ('echo %date_time::=-%') do set DATE_TIME=%%i

"C:\Program Files\MySQL\mysql server 5.5\bin\mysqldump" -u username -ppassword mysql>C:/%DATE_DAY%_%DATE_TIME%_database.sql
5

Иногда порт также определяется, как и IP-адрес сервера этой базы данных...

mysql -u user -p user -h <Server IP> -P<port> (DBNAME) < DB.sql 
4
mysql -u root -p password -D database_name << import.sql

Для подробной информации используйте справку 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. Другие, обратитесь http://www.ivarch.com/programs/pv.shtml

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
  • 0
    Для Centos: yum install pv
4

Аналогично https://stackoverflow.com/questions/17666249/how-to-import-an-sql-file-using-the-command-line-in-mysql
Основные отличия для меня:

  • База данных должна существовать первой
  • Нет пробела между -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.

  • 0
    ОТЛИЧНО. Мне нужен этот способ импорта.
4

Я использую Windows 10 с Powershell 5, и я нашел почти все "unix-подобные" решения, которые не работают для меня.

> mysql -u[username] [database-name] < my-database.sql
At line:1 char:31
+ mysql -u[username] [database-name] < my-database.sql
+                               ~
The '<' operator is reserved for future use.
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : RedirectionNotSupported

Я заканчиваю использование этой команды.

> type my-database.sql | mysql -u[username] -h[localhost] -p [database-name]

и он работает отлично, надеюсь, это помогает.

Благодаря @Франческо Касула ответить Кстати.

4

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

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

  • -ppassword БЕЗ ПРОСТРАНСТВА.

4

Следующие шаги помогут загрузить file.sql в базу данных MySQL.

Шаг 1: Загрузите file.sql.zip в любой каталог и разархивируйте там
Примечание: sudo apt-get install unzip : sudo apt-get unzip file.sql.zip
Шаг 2. Теперь перейдите к этому каталогу. Пример: cd /var/www/html

Шаг 3: mysql -u username -p database-name < file.sql
       Введите пароль и дождитесь завершения загрузки.

3

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

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

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

[client]
host=hostname.domainname
user=dbusername
password=dbpassword
  • 0
    Хотя командная строка изменчива (и, если у вас нет кейлоггера или человека, стоящего за спиной, я бы ожидал, что он будет безопасным при локальном исполнении), тогда как файл является постоянным, поэтому должен иметь более высокий риск, особенно. когда это в простом тексте
  • 1
    ... однако команда mysql действительно предупреждает: «mysql: [Предупреждение] Использование пароля в интерфейсе командной строки может быть небезопасным».
2

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

mysql -u username -p database_name </file path/file_name.sql

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

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

после этого командная строка спросит ваш пароль mysql

1

например, я установил программное обеспечение на C:\xampp\mysql\bin и мой файл находится по адресу C:\Users\file.sql

Просто установите username и database_name

Примечание. Сначала необходимо создать базу данных (database_name) вручную.

Запустите эту команду:

cd C:\xampp\mysql\bin && mysql -u username -p database_name < C:\Users\file.sql

А затем введите пароль

  • 0
    первая улыбка, которую я вижу в stOverF
1

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

Экспорт: mysqldump -u имя пользователя - -password = ваш_пароль имя_базы_данных> file.sql

Импорт: mysql -u имя пользователя - -password = ваш_пароль имя_базы_данных <file.sql

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

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

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
1

Если ваша папка имеет несколько файлов SQL, и вы установили Git Bash, вы можете использовать эту команду для импорта нескольких файлов:

cd /my-project/data

cat *.sql | /c/xampp/mysql/bin/mysql -u root -p 1234 myProjectDbName
1

Если вы используете MAMP на Mac OS X, это может быть полезно:

/applications/MAMP/library/bin/mysql -u MYSQL_USER -p DATABASE_NAME < path/to/database_sql/FILE.sql

MYSQL_USER по умолчанию является root.

0

Ты можешь использовать:

mysql -u<user> -p<pass> <db> < db.sql

пример:

mysql -uroot -proot db < db.sql

до свидания!

0

Из окон вы можете использовать команду ниже для импорта данных из дампа SQL

C:\Program Files\MySQL\MySQL Server 5.7\bin> mysql -u <> -p <> DBName <filelocation\query.sql

где -u сопровождается именем пользователя и -p, а затем паролем Mysql. Пароль можно пропустить в команде, так как он может быть введен по запросу.

0

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

mysql -u database_user -p < database_file.sql

Для удаленного сервера базы данных сделайте следующее:

mysql -u database_user -p -h remote_server_url < database_file.sql

Ещё вопросы

Сообщество Overcoder
Наверх
Меню