У меня есть файл .sql
с экспортом из phpMyAdmin
. Я хочу импортировать его на другой сервер с помощью командной строки.
У меня установлена Windows Server 2008 R2. Я поместил файл .sql
на диск C и попробовал эту команду
database_name < file.sql
Это не работает. Я получаю синтаксические ошибки.
- Как я могу без проблем импортировать этот файл?
- Мне нужно сначала создать базу данных?
32 ответа
Пытаться:
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
), прежде чем вы сможете его импортировать.
sudo mysql -u username -p database_name < file.sql
работает в некоторых случаях.
-R
и --triggers
кажутся вариантами для mysqldump
, что мне не сразу было ясно, основываясь на ответе. Кроме того, --triggers
включен по умолчанию "Эта опция включена по умолчанию; отключите ее с помощью --skip-triggers
."
Обычно mysqldump используется для резервного копирования всего база данных:
mysqldump db_name > backup-file.sql
Вы можете загрузить файл дампа обратно на сервер следующим образом:
< Сильный > Unix
mysql db_name < backup-file.sql
То же самое в командной строке Windows :
mysql -p -u [user] [database] < backup-file.sql
cmd.exe /c "mysql -u root -p db_name < backup-file.sql"
Командная строка MySQL
mysql> use db_name;
mysql> source backup-file.sql;
<
в mysql? (ubuntu18 / 20)
-u
и -p
, а пример Unix - нет. Интерфейс для mysql
одинаков для обоих, поэтому, скорее всего, вам понадобится та же команда в Unix, которая представлена здесь для Windows.
Что касается времени, необходимого для импорта огромных файлов: что наиболее важно, это занимает больше времени, потому что по умолчанию MySQL настроен на autocommit = true
. Вы должны отключить это перед импортом файла, а затем проверить, как импорт работает как драгоценный камень.
Вам просто нужно сделать следующее:
mysql> use db_name;
mysql> SET autocommit=0 ; source the_sql_file.sql ; COMMIT ;
autocommit=0
имела огромное значение с точки зрения скорости.
autocommit=0
работать с большими файлами? как файл sql размером 8 ГБ.
autocommit
. Стоит проверить дамп базы данных в редакторе, он может уже начинаться с SET autocommit=0;
.
Среди всех ответов на указанную выше проблему это лучший:
mysql> use db_name;
mysql> source file_name.sql;
Самый простой способ импортировать в вашу схему:
Войдите в mysql и выполните указанные ниже команды.
mysql> use your_db_name;
mysql> source /opt/file.sql;
Мы можем использовать эту команду для импорта 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
mysql -u root -p password bank < bank.sql
И если вы находитесь в каталоге Project
, а ваш файл SQL находится в каталоге Desktop
. Если вы хотите получить к нему доступ из каталога Project
, вы можете сделать это следующим образом:
cd ~/Project
mysql -u root -p password bank < ~/Desktop/bank.sql
-p
и password
не должно быть пробелов
mysql -u root -p"password" bank < bank.sql
mysql -u username -ppassword db_name < file.sql
.bash_history
Если у вас уже есть база данных, используйте следующее для импорта файла 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
, используйте относительный путь, указанный выше.
- Откройте командную строку MySQL
- Введите путь к вашему каталогу bin mysql и нажмите Enter
- Вставьте свой файл SQL в папку
bin
сервера mysql. - Создайте базу данных в MySQL.
- Используйте ту конкретную базу данных, в которую вы хотите импортировать файл SQL.
- Введите
source databasefilename.sql
и Enter . - Ваш файл SQL успешно загружен.
Решение, которое сработало для меня, приведено ниже:
Use your_database_name;
SOURCE path_to_db_sql_file_on_your_local;
Чтобы выгрузить базу данных в файл SQL, используйте следующую команду.
mysqldump -u username -p database_name > database_name.sql
Чтобы импортировать файл SQL в базу данных (убедитесь, что вы находитесь в том же каталоге, что и файл SQL, или укажите полный путь к файлу), выполните:
mysql -u username -p database_name < database_name.sql
Перейдите в каталог, в котором находится исполняемый файл MySQL. -u
для имени пользователя и -p
для запроса пароля:
C:\xampp\mysql\bin>mysql -u username -ppassword databasename < C:\file.sql
Чтобы импортировать отдельную базу данных, используйте следующую команду.
mysql -u username -p password dbname < dump.sql
Чтобы импортировать несколько дампов базы данных, используйте следующую команду.
mysql -u username -p password < dump.sql
Думаю, стоит упомянуть, что вы также можете загрузить файл gzip (сжатый) с помощью zcat
, как показано ниже:
zcat database_file.sql.gz | mysql -u username -p -h localhost database_name
gzcat
вместо zcat
.
mysql --user=[user] --password=[password] [database] < news_ml_all.sql
Я продолжал сталкиваться с проблемой, когда база данных не была создана.
Я исправил это так:
mysql -u root -e "CREATE DATABASE db_name"
mysql db_name --force < import_script.sql
Добавьте параметр --force
:
mysql -u username -p database_name --force < file.sql
Для экспорта базы данных:
mysqldump -u username -p database_name > file.sql
Для импорта базы данных:
mysql -u username -p database_name < file.sql
Для одновременного импорта нескольких файлов 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:
REM 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
Вам не нужно указывать имя базы данных в командной строке, если файл .sql содержит операторы CREATE DATABASE IF NOT EXISTS db_name
и USE db_name
.
Просто убедитесь, что вы подключаетесь к пользователю, у которого есть разрешения на создание базы данных, если база данных, указанная в файле .sql, не существует.
Импортировать базу данных
Ехать на машине:
d:
Логин MySQL
c:\xampp\mysql\bin\mysql -u root -p
Он запросит pwd. Введите его:
pwd
Выберите базу данных
use DbName;
Укажите имя файла
\.DbName.sql
D:
? Предполагается, что файл DbName.sql
находится в корне диска D:
? Вы можете уточнить? Пожалуйста, ответьте редактированием (изменением) вашего ответа, а не здесь, в комментариях ( без «Изменить:», «Обновить:» или аналогичный - вопрос / ответ должен выглядеть так, как если бы он был написан сегодня).
Использование:
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 — средство просмотра каналов.
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
yum install pv
Перейдите в каталог, в котором стоит MySQL.
c:\mysql\bin\> mysql -u username -p password database_name <
filename.sql
Также, чтобы выгрузить все базы данных, используйте опцию -all-databases
, и больше не нужно указывать имя базы данных.
mysqldump -u username -ppassword –all-databases > dump.sql
Или вы можете использовать для этого некоторые клиенты с графическим интерфейсом, например SQLyog.
Хотя в большинстве ответов здесь просто упоминается простая команда
mysql -u пользователь_базы_данных -p [имя_бд] <файл_базы_данных.sql
Сегодня довольно часто базы данных и таблицы имеют сортировку utf8, где этой команды недостаточно.
При наличии utf8-сопоставления в экспортируемых таблицах необходимо использовать эту команду:
mysql -u database_user -p --default-character-set=utf8 [db_name] < database_file.sql
Соответствующий экспорт может быть выполнен с помощью
mysqldump -u database_user -p --default-character-set=utf8 [db_name] > database_file.sql
Конечно, это работает и для других кодировок, как показать правильную нотацию можно увидеть здесь:
В одном из комментариев также упоминалось, что если база данных никогда не существует, сначала должна быть создана пустая база данных. В некоторых случаях это может быть правильным, но зависит от файла экспорта. Если в экспортированный файл уже включена команда для создания базы данных, тогда база данных никогда не должна создаваться на отдельном шаге, что даже может вызвать ошибку при импорте. Поэтому при импорте рекомендуется сначала взглянуть на файл, чтобы узнать, какие команды в нем включены, при экспорте рекомендуется записать настройки, особенно если файл очень большой и его трудно прочитать в редакторе.
Есть еще другие параметры для команды, которые перечислены и объяснены здесь:
https://dev.mysql.com/doc/refman/5.7/en/mysql-command-options.html
Если вы используете другую версию базы данных, рассмотрите возможность поиска соответствующей версии руководства. Упомянутые ссылки относятся к MySQL версии 5.7.
ИЗМЕНИТЬ:
Те же параметры работают и для mysqldump
. Таким образом, хотя команды для экспорта и импорта отличаются, упомянутые параметры — нет. Тем не менее, в руководстве есть специальный сайт, описывающий параметры mysqldump
: https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html
Чтобы импортировать базу данных, используйте следующую команду.
mysql> create new_database;
mysql> use new_database;
mysql> source (Here you need to import the path of the SQL file);
E.g.:
mysql> source E:/test/dump.sql;
Вам необходимо использовать косую черту (/) даже в Windows, например, E: /test/dump.sql вместо E: \ test \ dump.sql
Или двойные обратные косые черты (\\) из-за экранирования, то есть E: \\ test \\ dump.sql
Следующая команда работает для меня из командной строки (cmd) на Windows 7 на WAMP.
d:/wamp/bin/mysql/mysql5.6.17/bin/mysql.exe -u root -p db_name < database.sql
Вы можете попробовать этот запрос.
Экспорт:
mysqldump -u username –-password=your_password database_name > file.sql
Импортировать:
mysql -u username –-password=your_password database_name < file.sql
И подробно по этой ссылке:
Я подумал, что это может быть полезно для тех, кто использует Mac OS X:
/Applications/xampp/xamppfiles/bin/mysql -u root -p database < database.sql
Замените xampp
на mamp
или другие веб-серверы.
Импортировать в базу данных:
mysql -u имя пользователя -p имя_базы_данных путь к файлу / имя_файла.sql
Экспорт из базы данных:
mysqldump -u имя пользователя -p имя_базы_данных> / путь к файлу / имя_файла.sql
После этих команд появится запрос на ввод пароля MySQL.
Аналогично ответ владкраса в Как импортировать файл 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.
Для информации у меня просто был root + по умолчанию без пароля. Это не сработало со всеми предыдущими ответами.
Я создал нового пользователя со всеми привилегиями и паролем. Это сработало.
-ppassword БЕЗ ПРОБЕЛА.
Ввод учетных данных в командной строке - не лучшая идея. Вышеупомянутые ответы хороши, но не упоминают
mysql --defaults-extra-file=etc/myhost.cnf database_name < file.sql
Где etc / myhost.cnf - это файл, содержащий хост, пользователя и пароль, и вы избегаете раскрытия пароля в командной строке. Вот образец,
[client]
host=hostname.domainname
user=dbusername
password=dbpassword
Попробуйте этот код.
mysql -u username -p database_name < file.sql
Для получения дополнительной информации: Как импортировать файл SQL с помощью командной строки в MySQL
Похожие вопросы
Связанные вопросы
Новые вопросы
mysql
MySQL — это бесплатная система управления реляционными базами данных (RDBMS) с открытым исходным кодом, которая использует язык структурированных запросов (SQL). НЕ ИСПОЛЬЗУЙТЕ этот тег для других БД, таких как SQL Server, SQLite и т. д. Это разные БД, которые используют свои собственные диалекты SQL для управления данными. В вопросе всегда указывайте точную версию сервера. Версии 5.x сильно отличаются по своим возможностям от версий 8+.