Как импортировать файл SQL с помощью командной строки в MySQL?

avatar
Jaylen
16 июля 2013 в 00:43
4096580
54
2417

У меня есть файл .sql с экспортом из phpMyAdmin. Я хочу импортировать его на другой сервер с помощью командной строки.

У меня установлена ​​Windows Server 2008 R2. Я поместил файл .sql на диск C и попробовал эту команду

database_name < file.sql

Он не работает. Я получаю синтаксические ошибки.

  • Как мне без проблем импортировать этот файл?
  • Нужно ли мне сначала создать базу данных?
Источник
Bill Karwin
16 июля 2013 в 00:47
8

возможный дубликат Восстановить файл дампа MYSQL с помощью командной строки

AZinkey
29 августа 2017 в 14:01
2

возможный дубликат coderhelper.com/questions/11407349/…

Valentino Pereira
29 июня 2018 в 12:59
13

Что с этими парнями-дубликатами? Это действительно полезный вопрос, имеющий собственную цель.

AZinkey
18 июля 2019 в 07:36
0

@ValentinoPereira, вы проверили исходные даты вопросов, прежде чем определять повторяющихся парней?

Nico Haase
10 декабря 2019 в 11:28
0

Вы можете привести воспроизводимый пример? database < file.sql мне не кажется, что это какая-то команда, и если вы заметите какие-то синтаксические ошибки, поделитесь ими

Light.G
10 октября 2020 в 16:26
1

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

Peter Mortensen
6 октября 2021 в 13:22
0

Чтобы импортировать эффективно (в 200 раз быстрее), см. ответ Пареша Бехеде.

Nico Haase
29 октября 2021 в 15:30
0

«У меня синтаксические ошибки» - что это значит?

Ответы (54)

avatar
bansi
16 июля 2013 в 00:48
4451

Попробуйте:

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 вариант), прежде чем вы сможете его импортировать.

avatar
Chanuka
1 июля 2021 в 12:03
0

Вы можете использовать эти шаги так же легко.

  1. Загрузите файл SQL в папку "mysql / bin".

  2. Откройте папку mysql / bin с помощью CMD.

  3. Если требуемая база данных не существует, сначала создайте базу данных.

  4. Введите это в CMD и запустите:

    mysql -u <user> -p<password> <dbname> < file.sql

    «file.sql» - это файл SQL, который вы хотите вставить в целевую базу данных. Примеры: Если ваш «пароль» - «1234», «пользователь» - «root», а «dbname» - «test»:

     mysql -u root -p1234 test < file.sql
    

    Если ваш "пароль" равен нулю, а "пользователь" - "root", а "dbname" - "test"

     mysql -u root test < file.sql
    
  5. Проверьте, успешно ли загружены целевые данные.

Этот метод можно использовать для загрузки данных большого размера с использованием файлов SQL в CMD.

Убедитесь, что на шаге 4, если вы используете этот пароль, вставьте «-p» как одно слово без пробелов.

avatar
Manoj Niroshana
20 июня 2021 в 16:18
8

Попробуйте этот код.

mysql -u username -p database_name < file.sql

Для получения дополнительной информации: Как импортировать файл SQL с помощью командной строки в MySQL

Peter Mortensen
6 октября 2021 в 14:02
1

Чем это отличается от предыдущих ответов?

avatar
skoll
10 января 2021 в 07:09
3

Использование MySQL Secure Shell:

mysqlsh -u <username> -p -h <host> -D <database name> -f dump.sql
avatar
Madhusanka Edirimanna
7 декабря 2020 в 05:31
17

Чтобы импортировать базу данных, используйте следующую команду.

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

Mladen
19 января 2021 в 13:50
0

Это действительно сработало для меня. Предложение с более чем 4000 голосами не прошло.

Zdeněk Gromnica
8 февраля 2021 в 13:05
0

Вам нужно использовать косую черту (/) даже в Windows, например E: /test/dump.sql вместо E: \ test \ dump.sql или двойные обратные косые черты (\\) из-за экранирования, т.е. E: \\ test \ dump.sql

Peter Mortensen
19 сентября 2021 в 15:56
0

Но это не из командной строки в духе вопроса. Он использует оболочку MySQL в интерактивном режиме.

avatar
JaY KuMaR
5 декабря 2020 в 03:10
3

Простой. Просто используйте эту команду в cmd:

use databasename
\. C:/test/data.mysql
Peter Mortensen
6 октября 2021 в 13:57
0

Насколько мне известно, не является "use" в cmd (Windows) (хотя есть NET USE). Вы имеете в виду внутри клиента MySQL? Или что-то другое? Вы можете уточнить? Ответьте, отредактировав (изменив) свой ответ, а не здесь, в комментариях ( без «Изменить:», «Обновить:» или аналогичный - ответ должен появиться так, как если бы он был написан Cегодня).

avatar
nafischonchol
23 сентября 2020 в 10:12
1
  • Создайте базу данных в MySQL.

  • Затем перейдите в каталог вашего компьютера C: \ xampp \ mysql \ bin , напишите cmd в адресной строке и нажмите Введите .

  • Разархивируйте файл SQL

  • Затем напишите: mysql -u root -p dbname и нажмите Введите .

  • Запись: исходный sql.file. Нравится Source C:\xampp\htdocs\amarbazarltd\st1159.sql

  • Готово

Clinton
26 мая 2021 в 14:58
0

Проголосуйте за трюк Windows, заставляющий cmd открываться в правильном каталоге.

Peter Mortensen
6 октября 2021 в 13:51
0

По «перейти в каталог вашего компьютера» : Вы имеете в виду Проводник?

avatar
Abid Shah
1 июля 2020 в 08:04
0

Если вы используете XAMPP, перейдите в папку xapppmysqlbin. Откройте cmd здесь и вставьте это:

mysql -u root -p dbname < dbfilename.sql
avatar
user777388
17 февраля 2020 в 09:41
19

Для экспорта базы данных:

mysqldump -u username -p database_name > file.sql

Для импорта базы данных:

mysql -u username -p database_name < file.sql
avatar
GabrieleMartini
10 декабря 2019 в 12:09
4

Эта строка импортирует файл дампа в локальную базу данных под Linux.

mysql -u dbuser -p'password including spaces' dbname < path/to/dump_file.sql

Эта строка импортирует файл дампа в удаленную базу данных под Linux. Примечание: -P предназначен для порта и требуется, если порт MySQL отличается от порта по умолчанию.

mysql -h dbhost -u dbuser -p'password including spaces' -P 3306 dbname < path/to/dump_file.sql

Примечание: в пароле есть пробелы, поэтому используются одинарные кавычки. Просто измените стиль пути для использования команды в Windows (C:\windows\path\dump_file.sql).

avatar
Naveen dev
29 июля 2019 в 07:50
-3
  1. Перейдите в свой wamp или xampp каталог

    Пример

    cd d:/wamp/bin/mysql/mysql5.7.24/bin
    
  2. mysql -u root -p DATABASENAME < PATHYOUDATABASE_FILE

avatar
Amarat
11 июля 2019 в 05:47
-2

Попробуйте это:

cd C:\xampp\mysql\bin
mysql -u root -p database_name --force < C:\file.sql
Nico Haase
10 декабря 2019 в 11:27
3

Пожалуйста, добавьте пояснение к своему ответу - почему данный вызов устраняет синтаксические ошибки?

avatar
Shabeer Sha
23 июня 2019 в 03:13
1

В Ubuntu

 mysql -u root -p
 CREATE database dbname;
 use dbname;
 source /home/computername/Downloads/merchantapp.sql
 exit;

В Windows

Загрузите файл SQL и сохраните его в C:\xampp\mysql\bin.

После этого откройте командную строку с C:\xampp\mysql\bin:

 C:\xampp\mysql\bin> mysql -u username -p database_name < file.sql
Peter Mortensen
19 сентября 2021 в 15:56
0

Но это не из командной строки в духе вопроса. Он использует оболочку MySQL в интерактивном режиме.

avatar
Dev Semicolon
22 мая 2019 в 06:44
4

Для импорта базы данных через терминал

Перейдите в папку, в которой находится файл .sql

Затем выполните следующую команду:

mysql -u database_user_name -p database_name < sql_file_name.sql

Он запросит пароль. Введите пароль базы данных. Импорт данных в базу данных займет несколько секунд.

avatar
Hamfri
11 марта 2019 в 14:30
3

При импорте данных в контейнер Docker используйте следующую команду. Настройте пользователя (-u), базу данных (-D), порт (-P) и хост (-h) в соответствии с вашей конфигурацией.

mysql -u root -D database_name -P 4406 -h localhost --protocol=tcp -p < sample_dump.sql
Himanshu Upadhyay
26 марта 2019 в 09:17
0

Мне нужно было упомянуть имя хоста, потому что в моем случае localhost не был именем хоста БД. Так что этот синтаксис мне помог. Голосование.

avatar
Ammad
7 ноября 2018 в 01:59
104

Самый простой способ импорта в вашу схему:

Войдите в mysql и выполните указанные ниже команды.

mysql> use your_db_name;

mysql> source /opt/file.sql;
Hayden Thring
11 ноября 2018 в 21:24
5

Это будет работать без команды use для дампов с несколькими db в нем.

Wuelber Castillo
13 ноября 2018 в 17:10
1

Я пытался импортировать дамп из базы данных с другим именем, но с той же структурой, правильный ответ, выбранный автором, не сработал, он создал новую базу данных, названную в честь базы данных в файле дампа. Этот ответ прямо здесь сделал то, что я хотел, спасибо, чувак

Sergei Zahharenko
23 ноября 2018 в 08:24
1

большой! именно то, что я искал!

refex
11 октября 2019 в 08:08
3

это также контролирует выполнение скрипта, намного лучше, чем другие ответы

Peter Mortensen
19 сентября 2021 в 15:55
0

Но это не из командной строки в духе вопроса. Он использует оболочку MySQL в интерактивном режиме.

avatar
Rafael Andrs Cspedes Basterio
12 октября 2018 в 14:01
1

Вы можете использовать:

mysql -u<user> -p<pass> <db> < db.sql

Пример:

mysql -uroot -proot db < db.sql
avatar
Ripudaman Singh
24 сентября 2018 в 13:55
1

Для ОС Windows вы можете использовать следующую команду для импорта данных из дампа SQL.

C: \ Program Files \ MySQL \ MySQL Server 5.7 \ bin> mysql -u <> -p <> DBName <filelocation \ query.sql

Где -u - имя пользователя, а -p - пароль MySQL. Затем введите свой пароль и дождитесь импорта данных.

avatar
Mahdi Bashirpour
9 августа 2018 в 13:22
1

Если вы используете XAMPP в Windows, сначала вы должны вручную создать базу данных, а затем выполнить следующие команды:

cd C:\xampp\mysql\bin && 
mysql -u YOUR_USERNAME -p YOUR_DATABASE_NAME < PATH_TO_YOUR_SQL_FILE\YOUR_SQL_FILE.sql

А затем введите пароль

avatar
Md Shariful Islam
8 апреля 2018 в 09:32
9

Вы можете попробовать этот запрос.

Экспорт:

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/

avatar
David
21 марта 2018 в 21:04
11

Хотя в большинстве ответов здесь упоминается только простая команда

mysql -u пользователь_базы_данных -p [имя_бд] <файл_базы_данных.sql

сегодня довольно часто базы данных и таблицы имеют сортировку utf8, когда этой команды недостаточно. Имея utf8-сопоставление в экспортируемых таблицах, необходимо использовать эту команду:

mysql -u database_user -p --default-character-set = 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.

РЕДАКТИРОВАТЬ:
Те же параметры работают и для mysqldump. Таким образом, хотя команды для экспорта и импорта различны, упомянутые параметры - нет.

avatar
Edgencio Da Calista
13 февраля 2018 в 09:44
0

Если вы выполняете импорт на локальный сервер базы данных, вы можете сделать следующее:

mysql -u database_user -p < database_file.sql

Для удаленного сервера базы данных выполните следующие действия:

mysql -u database_user -p -h remote_server_url < database_file.sql
avatar
NeeruKSingh
5 января 2018 в 13:28
7

Импортировать в базу данных:

mysql -u имя пользователя -p имя_базы_данных </ путь к файлу / имя_файла.sql

Экспорт из базы данных:

mysqldump -u имя пользователя -p имя_базы_данных> / путь к файлу / имя_файла.sql

После этих команд появится запрос на ввод пароля MySQL.

avatar
Siva Praveen
18 декабря 2017 в 18:40
13

Использование:

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
Jonny
28 марта 2019 в 02:51
0

Для Centos: yum install pv

avatar
Kasun Siyambalapitiya
1 сентября 2017 в 10:21
69

Если у вас уже есть база данных, используйте следующую команду для импорта файла 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, используйте относительный путь, указанный выше.

avatar
jozxyqk
8 августа 2017 в 19:30
7

Аналогично ответу владкраса на Как импортировать файл SQL с помощью командной строки в MySQL? .

Ключевые отличия для меня:

  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.

Peter Mortensen
19 сентября 2021 в 15:54
0

Но это не из командной строки в духе вопроса. Он использует оболочку MySQL в интерактивном режиме.

avatar
Fery W
12 марта 2017 в 22:33
5

Я использую 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]

И он работает отлично и, надеюсь, помогает.

Благодаря ответу @Francesco Casula, BTW.

avatar
ChuckCottrill
25 февраля 2017 в 01:18
7

Не рекомендуется указывать учетные данные в командной строке. Вышеупомянутые ответы хороши, но не упоминают

mysql --defaults-extra-file=etc/myhost.cnf database_name < file.sql

Где etc / myhost.cnf - это файл, содержащий хост, пользователя, пароль, и вы избегаете раскрытия пароля в командной строке. Вот образец,

[client]
host=hostname.domainname
user=dbusername
password=dbpassword
George Birbilis
29 марта 2018 в 22:08
0

Однако командная строка является изменчивой (и если у вас нет кейлоггера или человека, стоящего за вашей спиной, я бы ожидал, что он будет безопасным при локальном выполнении), тогда как файл является постоянным, поэтому должен быть более высокий риск, особенно. когда это в виде обычного текста

George Birbilis
29 марта 2018 в 22:24
2

... однако команда mysql действительно предупреждает: «mysql: [Предупреждение] Использование пароля в интерфейсе командной строки может быть небезопасным».

avatar
Adeleke Akinade
4 января 2017 в 17:42
43

Чтобы выгрузить базу данных в файл SQL, используйте следующую команду.

mysqldump -u username -p database_name > database_name.sql

Чтобы импортировать файл SQL в базу данных (убедитесь, что вы находитесь в том же каталоге, что и файл SQL, или укажите полный путь к файлу), выполните:

mysql -u username -p database_name < database_name.sql
avatar
Paul Leclerc
29 декабря 2016 в 14:40
7

Для информации, у меня только что был root + по умолчанию без пароля. Это не сработало со всеми предыдущими ответами.

  • Я создал нового пользователя со всеми привилегиями и паролем. Это сработало.

  • -ppassword БЕЗ ПРОБЕЛА.

avatar
Francesco Casula
24 августа 2016 в 13:45
37

Думаю, стоит упомянуть, что вы также можете загрузить файл gzip (сжатый) с помощью zcat, как показано ниже:

zcat database_file.sql.gz | mysql -u username -p -h localhost database_name
avatar
Shiks
24 августа 2016 в 06:02
50

Решение, которое сработало для меня, приведено ниже:

Use your_database_name;
SOURCE path_to_db_sql_file_on_your_local;
klewis
12 июля 2017 в 13:29
0

Это сработало для меня с использованием клиента командной строки MySQL после помещения моего файла sql в соответствующий проводник окна просмотра каталога / bin. Спасибо

Jaskaran Singh
19 декабря 2017 в 11:12
3

Немного медленно, но не останавливается между ними и не говорит, что сервер MySQL ушел.

avatar
Manoj Kumar
18 августа 2016 в 12:12
168

Среди всех ответов на указанную выше проблему это лучший:

 mysql> use db_name;
 mysql> source file_name.sql;
Peter Mortensen
6 октября 2021 в 16:22
0

Но по-прежнему очень медленный (?).

Manoj Kumar
7 октября 2021 в 04:52
0

@PeterMortensen - будет зависеть от размера данных, иначе обычно это быстро.

avatar
David Silva Smith
11 августа 2016 в 05:02
6

Я постоянно сталкивался с проблемой, когда база данных не была создана.

Я исправил это так:

mysql -u root -e "CREATE DATABASE db_name"
mysql db_name --force < import_script.sql
avatar
Musa
19 апреля 2016 в 12:36
1

Экспорт определенных баз данных:

mysqldump --user=root --host=localhost --port=3306 --password=test -B CCR KIT > ccr_kit_local.sql

Экспорт баз данных CCR и KIT ...

Импортировать все экспортированные базы данных в конкретный экземпляр MySQL (вы должны быть там, где находится ваш файл дампа):

mysql --user=root --host=localhost --port=3306 --password=test < ccr_kit_local.sql
avatar
o0omycomputero0o
20 декабря 2015 в 02:22
1

Если в вашей папке несколько файлов SQL и вы установили Git Bash, вы можете использовать эту команду для импорта нескольких файлов:

cd /my-project/data

cat *.sql | /c/xampp/mysql/bin/mysql -u root -p 1234 myProjectDbName
avatar
Reuben
2 сентября 2015 в 23:41
16

Вам не нужно указывать имя базы данных в командной строке, если файл .sql содержит операторы CREATE DATABASE IF NOT EXISTS db_name и USE db_name.

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

avatar
Leopathu
25 мая 2015 в 05:14
34

Чтобы импортировать отдельную базу данных, используйте следующую команду.

mysql -u username -p password dbname < dump.sql

Чтобы импортировать несколько дампов базы данных, используйте следующую команду.

mysql -u username -p password < dump.sql
avatar
Abdul Rehman Janjua
16 мая 2015 в 11:13
18

Для одновременного импорта нескольких файлов 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
avatar
victor
11 марта 2015 в 15:38
8

Следующая команда работает для меня из командной строки (cmd) на Windows 7 на WAMP.

d:/wamp/bin/mysql/mysql5.6.17/bin/mysql.exe -u root -p db_name < database.sql
avatar
Ramesh Sinha
16 января 2015 в 10:22
4

Следующие шаги помогут загрузить 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
Введите пароль и дождитесь завершения загрузки.

avatar
user4412947
2 января 2015 в 15:58
62
  1. Откройте командную строку MySQL
  2. Введите путь к вашему каталогу bin mysql и нажмите Введите
  3. Вставьте файл SQL в папку bin на сервере mysql.
  4. Создайте базу данных в MySQL.
  5. Используйте ту конкретную базу данных, в которую вы хотите импортировать файл SQL.
  6. Введите source databasefilename.sql и введите
  7. Ваш файл SQL успешно загружен.
Ramesh Pareek
3 июля 2017 в 11:03
2

введите путь к вашему каталогу bin mysql и нажмите

avatar
NicO
3 декабря 2014 в 23:36
1

Если вы используете MAMP в Mac OS X, это может быть полезно:

/applications/MAMP/library/bin/mysql -u MYSQL_USER -p DATABASE_NAME < path/to/database_sql/FILE.sql

MYSQL_USER по умолчанию является корневым.

avatar
Giri
9 ноября 2014 в 18:49
7

Я подумал, что это может быть полезно для тех, кто использует Mac OS X:

/Applications/xampp/xamppfiles/bin/mysql -u root -p database < database.sql

Замените xampp на mamp или другие веб-серверы.

avatar
Tanmay Patel
8 сентября 2014 в 12:17
41

Перейдите в каталог, в котором находится исполняемый файл MySQL. -u для имени пользователя и -p для запроса пароля:

C:\xampp\mysql\bin>mysql -u username -ppassword databasename < C:\file.sql
Reporter
8 сентября 2014 в 13:59
5

Я думаю, что было бы более полезно для OP и других вопросов, когда вы добавите некоторые пояснения к своему намерению.

wappy
13 октября 2014 в 12:25
0

Это будет работать, только если у вас есть mysql.exe, определенный в переменных среды Windows. В противном случае вам следует ввести весь путь к файлу mysql.exe. И ваш синтаксис неверен. Например: "d: \ wamp \ bin \ mysql \ mysql5.5.8 \ bin \ mysql.exe -u ВАШЕ_ИМЯ_ПОЛЬЗОВАТЕЛЯ -p DB_NAME <FILENAME.SQL" Подробнее здесь: wpy.me/en/blog/…

avatar
user3728517
25 августа 2014 в 11:02
5

Для резервного копирования создайте 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
avatar
ktaria
24 августа 2014 в 18:17
9

Добавьте параметр --force:

mysql -u username -p database_name --force < file.sql
avatar
Pritam Chaudhari
31 июля 2014 в 05:55
16

Импортировать базу данных

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

     d:
    
  2. Логин MySQL

     c:\xampp\mysql\bin\mysql -u root -p
    
  3. Он запросит пароль. Введите его:

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

     use DbName;
    
  5. Введите имя файла

     \.DbName.sql
    
Peter Mortensen
6 октября 2021 в 12:45
0

Предположительно в Windows? Почему нужно переходить на диск D:? Предполагается, что файл DbName.sql находится в корне диска D:? Вы можете уточнить? Ответьте, отредактировав (изменив) свой ответ, а не здесь, в комментариях ( без «Изменить:», «Обновить:» или аналогичные - вопрос / ответ должен выглядеть так, как будто он было написано сегодня).

avatar
JohnSharath
13 мая 2014 в 07:49
7

Иногда определенный порт, а также IP-адрес сервера этой базы данных также имеют значение ...

mysql -u user -p user -h <Server IP address> -P<port> (DBNAME) < DB.sql
avatar
user3546602
17 апреля 2014 в 19:20
22
mysql --user=[user] --password=[password] [database] < news_ml_all.sql
avatar
Paresh Behede
4 апреля 2014 в 06:47
406

Что касается времени, необходимого для импорта огромных файлов: что наиболее важно, это занимает больше времени, потому что значение MySQL по умолчанию - autocommit = true. Вы должны отключить это перед импортом файла, а затем проверить, как импорт работает как драгоценный камень.

Вам просто нужно сделать следующее:

mysql> use db_name;

mysql> SET autocommit=0 ; source the_sql_file.sql ; COMMIT ;
Volomike
21 января 2015 в 20:12
9

Есть ли способ сделать это в одной командной строке в команде mysql, используемой для импорта?

davidkonrad
10 марта 2016 в 12:05
0

Лучший ответ inho. Это была команда source, которую я забыл. Большинство из нас хотят сделать это, пока мы вошли в систему как отдельная команда среди других команд, а не как стандартный вход> инъекция> выход из системы, находящаяся в верхней части серпов Google.

aexl
23 мая 2016 в 21:36
29

Я согласен, что это лучший ответ . Часть autocommit=0 существенно изменила скорость.

newbie
9 декабря 2016 в 05:06
2

будет ли autocommit=0 работать с большими файлами? как файл sql размером 8 ГБ.

hashchange
2 июля 2018 в 12:32
3

Не всегда нужно выключать autocommit. Стоит проверить дамп базы данных в редакторе, он может уже начинаться с SET autocommit=0;.

Akshay
28 сентября 2018 в 07:06
1

как насчет подпрограмм и триггеров?

iateadonut
17 марта 2020 в 07:11
2

@Volomike {echo "SET autocommit = 0;"; cat db.sql; echo "COMMIT;";} | mysql -u what -p - это для командных строк, совместимых с posix, не уверен в окнах

Peter Mortensen
6 октября 2021 в 13:17
0

Это работает, и не только для больших файлов. Для конкретного (очень простого) 5-мегабайтного SQL-файла, содержащего около 30 000 строк для одной таблицы, время импорта улучшилось с 31 минуты 35 секунд до 11 секунд. Это почти в 200 раз быстрее !!!

avatar
Amrit Dhungana
11 марта 2014 в 11:26
83

Мы можем использовать эту команду для импорта 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
Ejaz
19 августа 2014 в 12:00
26

Между -p и password не должно быть пробелов.

Armin
22 февраля 2015 в 14:11
0

Яп. Это не сработает. Правильным будет mysql -u root -p"password" bank < bank.sql

Naveed
2 июля 2015 в 11:11
5

почему ты просто не можешь ответить одной строчкой? mysql -u username -ppassword db_name < file.sql

asgs
14 ноября 2017 в 13:22
7

Хотя это совершенно не связано с этим вопросом / ответом, когда вы работаете с нетривиальными базами данных, предпочитайте НЕ вводить пароль для той же команды в виде обычного текста. Если вы не укажете пароль как часть команды, вам будет предложено ввести пароль, который вы можете безопасно ввести.

Neil
9 августа 2018 в 23:03
5

Особенно из-за .bash_history

GabrieleMartini
10 декабря 2019 в 12:11
0

Я согласен. Любой случай в mysql 8.0 позволяет сделать это: Отключение интерактивной истории: mysql поддерживает частичное или полное отключение интерактивной истории, в зависимости от платформы хоста.

philraj
9 апреля 2020 в 00:25
0

не только из-за .bash_history, но и потому, что любой, у кого есть возможность просматривать вашу текущую командную строку (через /proc или ps и т. д.), может увидеть введенный вами пароль. просто скажи нет паролям командной строки

avatar
Sathish D
16 июля 2013 в 04:26
11

Перейдите в каталог, в котором установлен MySQL.

 c:\mysql\bin\> mysql -u username -p password database_name <
 filename.sql

Также для создания дампа всех баз данных используйте параметр -all-databases, и больше не нужно указывать имя базы данных.

mysqldump -u username -ppassword –all-databases > dump.sql

Или вы можете использовать некоторые клиенты с графическим интерфейсом, например SQLyog, для этого.

Peter Mortensen
21 сентября 2021 в 20:44
0

Работает ли это со странным тире (-) - рядом с "все базы данных" (также в первой ревизии)?

avatar
vladkras
16 июля 2013 в 00:48
901

Обычно mysqldump используется для создания резервной копии всей базы данных:

mysqldump db_name > backup-file.sql

Вы можете загрузить файл дампа обратно на сервер следующим образом:

Unix

mysql db_name < backup-file.sql

То же, что в командной строке Windows :

mysql -p -u [user] [database] < backup-file.sql

PowerShell

cmd.exe /c "mysql -u root -p db_name < backup-file.sql"

Командная строка MySQL

mysql> use db_name;
mysql> source backup-file.sql;
T.Todua
10 июня 2021 в 17:58
0

Я единственный, кто никогда не мог использовать оператор < в mysql? (ubuntu18 / 20)

Stijn de Witt
21 июля 2021 в 12:55
2

Понятия не имею, почему примеры Windows включают параметры -u и -p, а пример Unix - нет. Интерфейс для mysql одинаков для обоих, поэтому, скорее всего, вам понадобится та же команда в Unix, которая представлена ​​здесь для Windows.