Как импортировать файл SQL с помощью командной строки в MySQL?
у меня есть .sql файл с экспортом из phpMyAdmin. Я хочу импортировать его на другой сервер с помощью командной строки.
у меня есть Windows Server 2008 установка R2. Я поставил на диск C, и я попробовал эту команду
database_name < file.sql
это не работает, я получаю ошибки синтаксиса.
- как я могу импортировать этот файл без проблем?
- нужно ли мне создать сначала база данных?
30 ответов:
попробуй:
mysql -u username -p database_name < file.sqlРегистрация MySQL Options.
Примечание-1: лучше использовать полный путь к файлу SQL
file.sql.примечание-2: использовать
-Rи--triggersсохранить процедуры и триггеры базы данных. Они не копируются по умолчанию.
совместное использование mysqldump для создания резервной копии всей базы данных:
shell> mysqldump db_name > backup-file.sqlвы можете загрузить файл дампа обратно на сервер следующим образом:
UNIX
shell> mysql db_name < backup-file.sqlто же самое в Windows запрос:
mysql -p -u [user] [database] < backup-file.sqlPowerShell
C:\> cmd.exe /c "mysql -u root -p db_name < backup-file.sql"командная строка MySQL
mysql> use db_name; mysql> source backup-file.sql;
Что касается времени, необходимого для импорта огромных файлов: самое главное, это занимает больше времени, потому что по умолчанию MySQL является
autocommit = true. Вы должны установить это перед импортом файла, а затем проверить, как импорт работает как драгоценный камень.вам просто нужно сделать следующее:
mysql> use db_name; mysql> SET autocommit=0 ; source the_sql_file.sql ; COMMIT ;
мы можем использовать эту команду для импорта 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 файл находится в . Если вы хотите получить к нему доступ изProjectкаталог, то вы можете сделать так:~/Project ? mysql -u root -p password bank < ~/Desktop/bank.sql
- Откройте командную строку MySQL
- введите путь к каталогу mysql bin и нажмите введите
- вставьте SQL-файл в
binпапка сервера mysql.- создать базу данных в MySQL.
- используйте эту конкретную базу данных, где вы хотите импортировать файл SQL.
- тип
source databasefilename.sqlи введите- ваша загрузка файла SQL успешно.
если у вас уже есть база данных, используйте следующее для импорта
dumpилиsqlfilemysql -u username -p database_name < file.sqlесли вам не нужно создавать соответствующую базу данных(пустую) в MySQL, для этого сначала войдите на
решение, которое сработало для меня ниже:
Use your_database_name; SOURCE path_to_db_sql_file_on_your_local;
перейдите в каталог, где у вас есть исполняемый файл 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
для сброса базы данных в файл SQL используйте следующую команду
mysqldump -u username -p database_name > database_name.sqlчтобы импортировать файл SQL в базу данных (убедитесь, что вы находитесь в том же каталоге, что и файл SQL, или укажите полный путь к файлу)
mysql u -username -p database_name < database_name.sql
Я думаю, что стоит упомянуть, что вы также можете загрузить a сжатый (сжатом) С
zcatкак показано ниже:zcat database_file.sql.gz | mysql -u username -p -h localhost database_name
для импорта нескольких файлов 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
вам не нужно указывать имя базы данных в командной строке, если .sql файл, содержащий
CREATE DATABASE IF NOT EXISTS db_nameиUSE db_nameзаявления.просто убедитесь, что вы подключаетесь к пользователю, который имеет разрешения на создание базы данных, если база данных упоминается в разделе .sql-файл не существует.
импорт базы данных
перейти к диска:
command: d:MySQL login
command: c:\xampp\mysql\bin\mysql -u root -pон будет просить для инвалидов. Введите его:
pwdвыберите базу данных
use DbName;Укажите имя файла
\.DbName.sql
добавить
--forceопции:mysql -u username -p database_name --force < file.sql
Я думал, что это может быть полезно для тех, кто использует Mac OS X:
/Applications/xampp/xamppfiles/bin/mysql -u root -p database < database.sqlзаменить
xamppСmampили другие веб-серверы.
следующая команда работает для меня из командной строки (cmd) на Windows 7 на WAMP.
d:/wamp/bin/mysql/mysql5.6.17/bin/mysql.exe -u root -p db_name < database.sql
перейдите в каталог, где у вас есть 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, чтобы сделать это.
иногда порт определяется так же, как и сервер IP-адрес этой базы данных также имеет значение...
mysql -u user -p user -h <Server IP> -P<port> (DBNAME) < DB.sql
для резервного копирования создайте файл BAT и запустите этот файл BAT с помощью Планировщик Задач. Это займет резервную копию базы данных; просто скопируйте следующую строку и вставьте в Блокнот а затем сохранить .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
Я постоянно сталкивался с проблемой, когда база данных не была создана.
я исправил это такой
mysql -u root -e "CREATE DATABASE db_name" mysql db_name --force < import_script.sql
для информации у меня просто был корень по умолчанию + withoutpassword, он не работает со всеми вышеперечисленными ответами.
Я создал нового пользователя со всеми привилегиями и паролем. Это работает.
- ppassword без пробела.
Я использую 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]и он отлично работает, надеюсь, что это помогает.
спасибо @Франческо Казула ' s ответ кстати.
аналогично https://stackoverflow.com/a/17666285/1888983
Ключевые отличия для меня:
- база данных должна существовать в первую очередь
- нет пробела между
-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.
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. Другие, обратитесь http://www.ivarch.com/programs/pv.shtmlpv 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
в то время как большинство ответов здесь просто упомянуть простую команду
mysql-u database_user-p [db_name]
сегодня довольно часто базы данных и таблицы имеют utf8-параметры сортировки, где этой команды недостаточно. Имея utf8-параметры сортировки в экспортируемых таблицах, необходимо использовать следующую команду:
mysql-u database_user-p --default-character-set=utf8 [db_name]
Surley это работает и для других наборов символов, как показать правильную нотацию можно увидеть здесь:
в одном комментарии также упоминается, что если база данных никогда не существует, сначала должна быть создана пустая база данных. В некоторых случаях это может быть правильно, но зависит от файла экспорта. Если экспортированный файл уже содержит команду создайте базу данных, то база данных никогда не должна быть создана в отдельном шаге, который даже может вызвать ошибку при импорте. Поэтому при импорте желательно сначала посмотреть в файл, чтобы узнать, какие команды включены там, при экспорте желательно отметить настройки, особенно если файл очень большой и трудно читать в Редакторе.
есть еще больше параметров для команды, которые перечислены и объяснены здесь:
https://dev.mysql.com/doc/refman/5.7/en/mysql-command-options.html
Если вы используете другую версию базы данных, рассмотрите возможность поиска соответствующей версии руководства. Указанные ссылки относятся к MySQL версии 5.7.
следующие шаги помогают загрузить
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
Введите пароль и дождитесь завершения загрузки.
предоставление учетных данных в командной строке не очень хорошая идея. Приведенные выше ответы велики, но не стоит упоминать
mysql --defaults-extra-file=etc/myhost.cnf database_name < file.sqlгде etc / myhost.cnf-это файл, который содержит хост, пользователя, пароль, и вы избегаете раскрывать пароль в командной строке. Вот пример,
[client] host=hostname.domainname user=dbusername password=dbpassword
Comments