Как импортировать файл 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 ;

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

 mysql> use db_name;
 mysql> source file_name.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
~/Desktop ? mysql -u root -p password bank < bank.sql

и если вы находитесь в Project каталог и ваш файл SQL находится в . Если вы хотите получить к нему доступ из Project каталог, то вы можете сделать так:

~/Project ? mysql -u root -p password bank < ~/Desktop/bank.sql

  1. Откройте командную строку MySQL
  2. введите путь к каталогу mysql bin и нажмите Enter
  3. вставьте файл SQL внутри bin папка сервера mysql.
  4. создайте базу данных в MySQL.
  5. используйте эту конкретную базу данных, в которую вы хотите импортировать файл SQL.
  6. тип source databasefilename.sql и Enter
  7. ваша загрузка файла 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

mysql --user=[user] --password=[password] [database] < news_ml_all.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

на ПУВР:

#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-файл не существует.


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

  1. перейти к диска:

    command: d:
    
  2. MySQL login

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

    pwd
    
  4. выберите базу данных

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

    \.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
Ключевые отличия для меня:

  1. база данных должна существовать первая
  2. нет пробела между -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/show-collation.html

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

есть еще больше параметров для команды, которые перечислены и объяснены здесь:

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