Как импортировать файл SQL с помощью командной строки в MySQL?
у меня есть .sql
файл с экспортом из phpMyAdmin
. Я хочу импортировать его на другой сервер с помощью командной строки.
у меня есть Windows Server 2008 установка R2. Я поместил на C drive, и я попробовал эту команду
database_name < file.sql
это не работает, я получаю ошибки синтаксиса.
- как импортировать этот файл без проблем?
- мне нужно создать сначала база данных?
30 ответов
попробуй:
mysql -u username -p database_name < file.sql
Регистрация Параметры MySQL.
Примечание-1: лучше использовать полный путь к файлу SQL file.sql
.
примечание-2: использовать -R
и --triggers
сохранить процедуры и триггеры базы данных. Они не копируются по умолчанию.
совместное использование mysqldump для создания резервной копии всей базы данных:
shell> mysqldump db_name > backup-file.sql
вы можете загрузить файл дампа обратно на сервер следующим образом:
в Unix
shell> mysql db_name < backup-file.sql
то же самое в окна запрос:
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;
Что касается времени, необходимого для импорта огромных файлов: самое главное, это занимает больше времени, потому что настройка по умолчанию 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 и нажмите Enter
- вставьте файл SQL внутри
bin
папка сервера mysql. - создайте базу данных в MySQL.
- используйте эту конкретную базу данных, в которую вы хотите импортировать файл SQL.
- тип
source databasefilename.sql
и Enter - ваша загрузка файла SQL успешно.
если у вас уже есть база данных, используйте следующее для импорта dump
или
mysql -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
Я думаю, стоит упомянуть, что вы также можете загрузить сжатый (сжатом) С 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
на ПУВР:
#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. Введите его:
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 on 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 help для деталей 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 и посмотрите передачу данных через pipe
Для 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
в то время как большинство ответов здесь просто упомянуть простую команду
mysql-u database_user-p [db_name]
сегодня довольно часто базы данных и таблицы имеют utf8-collation, где этой команды недостаточно. Имея utf8-сортировку в экспортируемых таблицах, необходимо использовать следующую команду:
в MySQL -у database_user -П --по умолчанию-знак-комплект=utf8 в [имя_базы_данных]
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