Как импортировать файл SQL с помощью командной строки в MySQL?
У меня есть файл .sql
с экспортом из phpMyAdmin
. Я хочу импортировать его на другой сервер с помощью командной строки.
У меня установлена Windows Server 2008 R2. Я поместил файл .sql
на диск C и попробовал эту команду
database_name < file.sql
Это не работает. Я получаю синтаксические ошибки.
- Как я могу импортировать этот файл без проблем?
- Нужно ли сначала создавать базу данных?
Ответы
Ответ 1
Пытаться:
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
Обычное использование 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;
Ответ 3
Относительно времени, затрачиваемого на импорт огромных файлов: самое главное, это занимает больше времени, поскольку по умолчанию MySQL имеет значение autocommit = true
. Вы должны установить это, прежде чем импортировать свой файл, а затем проверить, как импорт работает как драгоценный камень.
Вам просто нужно сделать следующее:
mysql> use db_name;
mysql> SET autocommit=0 ; source the_sql_file.sql ; COMMIT ;
Ответ 4
Среди всех ответов, для проблемы выше, это лучший вариант:
mysql> use db_name;
mysql> source file_name.sql;
Ответ 5
Мы можем использовать эту команду для импорта 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
Ответ 6
- Откройте командную строку MySQL
- Введите путь к вашему директорию bin mysql и нажмите Enter
- Вставьте ваш файл SQL в папку
bin
сервера mysql.
- Создать базу данных в MySQL.
- Используйте эту конкретную базу данных, где вы хотите импортировать файл SQL.
- Введите
source databasefilename.sql
и Enter
- Успешно загружается ваш файл SQL.
Ответ 7
Если у вас уже есть база данных, используйте следующую команду для импорта 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
, используйте относительный путь, указанный выше.
Ответ 8
Решение, которое сработало для меня ниже:
Use your_database_name;
SOURCE path_to_db_sql_file_on_your_local;
Ответ 9
Самый простой способ импортировать в вашу схему:
Войдите в mysql и выполните команды, упомянутые ниже.
mysql> use your_db_name;
mysql> source /opt/file.sql;
Ответ 10
Перейдите в каталог, в котором имеется исполняемый файл MySQL. -u
для имени пользователя и -p
для запроса пароля:
C:\xampp\mysql\bin>mysql -u username -ppassword databasename < C:\file.sql
Ответ 11
Чтобы вывести базу данных в файл SQL, используйте следующую команду.
mysqldump -u username -p database_name > database_name.sql
Чтобы импортировать файл SQL в базу данных (убедитесь, что вы находитесь в том же каталоге, что и файл SQL, или укажите полный путь к файлу), выполните:
mysql -u username -p database_name < database_name.sql
Ответ 12
Я думаю, стоит упомянуть, что вы можете загрузить файл gzipped (сжатый) с помощью zcat
, как показано ниже:
zcat database_file.sql.gz | mysql -u username -p -h localhost database_name
Ответ 13
Чтобы импортировать одну базу данных, используйте следующую команду.
mysql -u username -p password dbname < dump.sql
Чтобы импортировать несколько дампов базы данных, используйте следующую команду.
mysql -u username -p password < dump.sql
Ответ 14
mysql --user=[user] --password=[password] [database] < news_ml_all.sql
Ответ 15
Чтобы импортировать несколько файлов 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
Ответ 16
Вам не нужно указывать имя базы данных в командной строке, если файл .sql содержит инструкции CREATE DATABASE IF NOT EXISTS db_name
и USE db_name
.
Просто убедитесь, что вы подключаетесь к пользователю, имеющему разрешения на создание базы данных, если база данных, указанная в файле .sql, не существует.
Ответ 17
Импорт базы данных
Ответ 18
Добавьте параметр --force
:
mysql -u username -p database_name --force < file.sql
Ответ 19
Использование:
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
Ответ 20
Хотя большинство ответов здесь просто упоминают простую команду
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.
Ответ 21
Перейдите в каталог, в котором у вас есть 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, чтобы это сделать.
Ответ 22
Вы можете попробовать этот запрос.
Экспорт:
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/
Ответ 23
Я думал, что это может быть полезно для тех, кто использует Mac OS X:
/Applications/xampp/xamppfiles/bin/mysql -u root -p database < database.sql
Замените xampp
на mamp
или на других веб-серверах.
Ответ 24
Следующая команда работает для меня из командной строки (cmd) на
Windows 7 на WAMP.
d:/wamp/bin/mysql/mysql5.6.17/bin/mysql.exe -u root -p db_name < database.sql
Ответ 25
Иногда порт также определяется, как и IP-адрес сервера этой базы данных...
mysql -u user -p user -h <Server IP> -P<port> (DBNAME) < DB.sql
Ответ 26
Для резервного копирования создайте файл 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
Ответ 27
Следующие шаги помогут загрузить 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
Введите пароль и дождитесь завершения загрузки.
Ответ 28
Я продолжал сталкиваться с проблемой, когда база данных не была создана.
Я исправил его так:
mysql -u root -e "CREATE DATABASE db_name"
mysql db_name --force < import_script.sql
Ответ 29
Предоставление учетных данных в командной строке не является хорошей идеей. Вышеупомянутые ответы велики, но пренебрегайте упоминанием
mysql --defaults-extra-file=etc/myhost.cnf database_name < file.sql
Где etc/myhost.cnf - файл, содержащий хост, пользователя, пароль, и вы избегаете раскрывать пароль в командной строке. Вот пример,
[client]
host=hostname.domainname
user=dbusername
password=dbpassword
Ответ 30
Аналогично ответу vladkras на Как импортировать файл SQL с помощью командной строки в 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.