如何在MySQL中使用命令行导入SQL文件?

How to import an SQL file using the command line in MySQL?

提问人:Jaylen 提问时间:7/16/2013 最后编辑:Super Kai - Kazuya ItoJaylen 更新时间:11/16/2023 访问量:4940959

问:

我有一个从 .我想使用命令行将其导入到其他服务器中。.sqlphpMyAdmin

我安装了 Windows Server 2008 R2。我将文件放在 C 驱动器上,并尝试了以下命令.sql

database_name < file.sql

它不起作用。我遇到语法错误。

  • 如何顺利导入此文件?
  • 我需要先创建数据库吗?
MySQL 数据库 导入 命令行 转储

评论

8赞 Bill Karwin 7/16/2013
使用命令行恢复 MYSQL 转储文件的可能副本
2赞 AZinkey 8/29/2017
stackoverflow.com/questions/11407349/ 的可能重复...
17赞 Valentino Pereira 6/29/2018
这些重复的家伙是怎么回事?这确实是一个有用的问题,有其自身的目的
0赞 AZinkey 7/18/2019
在确定重复的人之前,您是否@ValentinoPereira检查过原始问题日期
1赞 Light.G 10/11/2020
在我检查了下面的所有答案之后,我必须说你错过了那些想要帮助的人的一个非常重要的线索。从数据库转储数据时,未能指定确切的命令。

答:

4908赞 bansi 7/16/2013 #1

尝试:

mysql -u username -p database_name < file.sql

选中 MySQL 选项

注1:最好使用SQL文件的完整路径。file.sql

注2:使用 和 with 保留原始数据库的例程和触发器。默认情况下不会复制它们。-R--triggersmysqldump

注3如果 MySQL 尚不存在,并且导出的 SQL 不包含(导出的 WITH 或选项),则可能需要从 MySQL 创建(空)数据库,然后才能导入它。CREATE DATABASE--no-create-db-n

评论

0赞 Christian Soto 12/30/2021
sudo mysql -u username -p database_name < file.sql在某些情况下有效。
8赞 panda-byte 3/7/2022
所以,似乎是选项,根据答案,我并不清楚。此外,默认情况下启用“此选项默认启用;使用 --skip-triggers 禁用它。-R--triggersmysqldump--triggers
0赞 Raul Chiarella 6/24/2023
如果我使用的是 docker 怎么办?:(
0赞 bansi 6/26/2023
您可以使用参考:在 Docker 中备份(和恢复)MySQL 数据docker exec -i <container_id> mysql -u <user> --password=<password> database_name < file.sql
1036赞 vladkras 7/16/2013 #2

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;

评论

0赞 T.Todua 6/11/2021
是我一个人从来没有在mysql中使用过运算符吗?(Ubuntu18/20)<
12赞 Stijn de Witt 7/21/2021
不知道为什么 Windows 示例包含参数,而 Unix 示例没有。两者的界面是相同的,因此很可能您需要在 Unix 中使用与此处介绍的 Windows 相同的命令。-u-pmysql
0赞 temirbek 4/11/2022
我们把备份文件.sql放在哪里?默认情况下它看起来是什么路径?
0赞 Swati 6/24/2022
我转到C:\Program Files\MySQL\MySQL Server 8.0\bin并运行mysql.exe。登录到MySQL并进行了上述更改。成功了。谢谢。
0赞 MTP 10/26/2022
@StijndeWitt他的 Linux 发行版在例如 ~/.my.cnf 文件中配置了凭据
1赞 Christian 3/16/2023
我不知道该命令,所以这对我非常有帮助,尤其是当 SQL 查询如此之多以至于无法轻松复制/粘贴时source
11赞 Sathish D 7/16/2013 #3

转到 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)来执行此操作。

评论

0赞 Peter Mortensen 9/22/2021
它是否适用于奇怪的破折号 (–) - 接近“all-databases”(也在第一个修订版中)?
97赞 Amrit Dhungana 3/11/2014 #4

我们可以使用这个命令从命令行导入 SQL:

mysql -u username -p password db_name < file.sql

例如,如果用户名是,密码是 。您的数据库名称为 ,SQL 文件是 .然后,简单地这样做:rootpasswordbankbank.sql

mysql -u root -p password bank < bank.sql

记住 SQL 文件的位置。如果您的 SQL 文件位于文件夹/目录中,请转到桌面目录并输入如下命令:Desktop

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

如果你在目录中,并且你的 SQL 文件在目录中。如果你想从目录中访问它,那么你可以这样做:ProjectDesktopProject

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

评论

31赞 Ejaz 8/19/2014
和之间不应该有空格-ppassword
0赞 Armin 2/22/2015
日本。这是行不通的。正确的是mysql -u root -p"password" bank < bank.sql
5赞 Naveed 7/2/2015
为什么你根本不能一行回答?mysql -u username -ppassword db_name < file.sql
7赞 asgs 11/14/2017
虽然这与这个问题/答案完全无关,但当您使用非平凡的数据库时,最好不要以纯文本形式在同一命令中输入密码。未在命令中指定密码将提示您输入密码,您可以安全地输入密码
7赞 Neil 8/10/2018
特别是因为.bash_history
496赞 Paresh Behede 4/4/2014 #5

关于导入大文件所需的时间:最重要的是,它需要更多时间,因为MySQL的默认设置是。您必须在导入文件之前将其关闭,然后检查导入如何像 gem 一样工作。autocommit = true

您只需要执行以下操作:

mysql> use db_name;

mysql> SET autocommit=0 ; source the_sql_file.sql ; COMMIT ;

评论

10赞 Volomike 1/22/2015
有没有办法在用于导入的 mysql 命令的单个命令行中执行此操作?
37赞 ᴍᴇʜᴏᴠ 5/24/2016
我同意这是最好的答案。这部分在速度方面有很大的不同。autocommit=0
5赞 hashchange 7/2/2018
并不总是需要关闭。值得在编辑器中检查数据库转储,它可能已经以 开头。autocommitSET autocommit=0;
3赞 iateadonut 3/17/2020
@Volomike { echo “SET autocommit=0;”; cat db.sql; echo “COMMIT;”;} |mysql -u what -p - 这适用于符合 POSIX 的命令行,不确定 Windows
4赞 Peter Mortensen 10/6/2021
这适用于大文件。对于单个表包含约 30,000 行的特定(非常简单)5 兆字节的 SQL 文件,它将导入时间从 31 分 35 秒缩短到 11 秒。这快了近 200 倍!!
24赞 user3546602 4/18/2014 #6
mysql --user=[user] --password=[password] [database] < news_ml_all.sql
8赞 JohnSharath 5/13/2014 #7

有时,定义的端口以及该数据库的服务器 IP 地址也很重要......

mysql -u user -p user -h <Server IP address> -P<port> (DBNAME) < DB.sql
17赞 Pritam Chaudhari 7/31/2014 #8

导入数据库

  1. 去驱动器:

     d:
    
  2. MySQL登录

     c:\xampp\mysql\bin\mysql -u root -p
    
  3. 它将要求 pwd。输入它:

     pwd
    
  4. 选择数据库

     use DbName;
    
  5. 提供文件名

     \.DbName.sql
    

评论

0赞 Peter Mortensen 10/6/2021
大概在 Windows 上?为什么需要换开车?文件是否假定位于驱动器的根目录?你能详细说明一下吗?请通过编辑(更改)您的答案来回复,而不是在评论中(没有“编辑:”,“更新:”或类似内容 - 问题/答案应该看起来像今天写的一样)。D:DbName.sqlD:
9赞 ktaria 8/25/2014 #9

添加 --force 选项

mysql -u username -p database_name --force < file.sql
6赞 user3728517 8/25/2014 #10

出于备份目的,请创建一个 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
42赞 Tanmay Patel 9/8/2014 #11

转到包含MySQL可执行文件的目录。 对于用户名并提示输入密码:-u-p

C:\xampp\mysql\bin>mysql -u username -ppassword databasename < C:\file.sql

评论

5赞 Reporter 9/8/2014
我认为当你在你的意图中添加一些解释时,这对 OP 和进一步的问题会更有帮助。
0赞 wappy 10/13/2014
仅当您在 Windows 环境变量中定义了 mysql.exe 时,这才有效。如果没有,则应键入mysql.exe文件的所有路径。你的语法是错误的。例如:“d:\wamp\bin\mysql\mysql5.5.8\bin\mysql.exe -u YOUR_USERNAME -p DB_NAME < FILENAME。SQL“ 更多信息在这里: wpy.me/en/blog/...
0赞 Raham 2/17/2023
D:\xampp\mysql\bin>mysql -u root -p opfedu_campuses < C:\Users\Raham\Desktop\opfedu_campuses.sql
7赞 Giri 11/10/2014 #12

我认为它可能对那些使用Mac OS X的人有用:

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

替换为或其他 Web 服务器。xamppmamp

1赞 NicO 12/4/2014 #13

如果您在 Mac OS X 上使用 MAMP,这可能会有所帮助:

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

默认情况下,MYSQL_USER 是 root。

68赞 user4412947 1/2/2015 #14
  1. 打开 MySQL 命令行
  2. 键入 mysql bin 目录的路径,然后按Enter
  3. 将您的 SQL 文件粘贴到 mysql 服务器的文件夹中。bin
  4. 在MySQL中创建数据库。
  5. 使用要导入 SQL 文件的特定数据库。
  6. Type 和source databasefilename.sqlEnter
  7. 您的 SQL 文件上传成功。

评论

2赞 Ramesh Pareek 7/3/2017
是的,你的MySQL bin目录的路径,然后按
4赞 Ramesh Sinha 1/16/2015 #15

以下步骤有助于上传到 MySQL 数据库。file.sql

第 1 步:上传到任何目录并在那里
解压缩 注意: : 第 2 步:
现在导航到该目录。例:
file.sql.zipsudo apt-get install unzipsudo apt-get unzip file.sql.zipcd /var/www/html

第 3 步:
输入密码并等待上传完成。
mysql -u username -p database-name < file.sql

8赞 victor 3/11/2015 #16

以下命令从命令行 (cmd) 对我有用 WAMP 上的 Windows 7。

d:/wamp/bin/mysql/mysql5.6.17/bin/mysql.exe -u root -p db_name < database.sql
20赞 Abdul Rehman Janjua 5/16/2015 #17

要一次导入多个 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
36赞 Leopathu 5/25/2015 #18

若要导入单个数据库,请使用以下命令。

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

若要导入多个数据库转储,请使用以下命令。

mysql -u username -p password < dump.sql

评论

0赞 Abhishek Singh 8/10/2022
谢谢!我一直在寻找这个。一次导入所有 MySQL 数据库转储。上述命令mysql -u root -p的更简洁和简短的版本<全部.sql
18赞 Reuben 9/3/2015 #19

如果 .sql 文件包含 和 语句,则无需在命令行上指定数据库的名称。CREATE DATABASE IF NOT EXISTS db_nameUSE db_name

如果 .sql 文件中提到的数据库不存在,只需确保与有权创建数据库的用户进行连接即可。

1赞 o0omycomputero0o 12/20/2015 #20

如果文件夹包含多个 SQL 文件,并且已安装 Git Bash,则可以使用此命令导入多个文件:

cd /my-project/data

cat *.sql | /c/xampp/mysql/bin/mysql -u root -p 1234 myProjectDbName
1赞 Musa 4/19/2016 #21

导出特定数据库:

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
23赞 David Silva Smith 8/11/2016 #22

我一直遇到未创建数据库的问题。

我是这样修复的:

mysql -u root -e "CREATE DATABASE db_name"
mysql db_name --force < import_script.sql

评论

0赞 Joshua Pinter 8/25/2023
这里需要什么?--force
54赞 Shiks 8/24/2016 #23

对我有用的解决方案如下:

Use your_database_name;
SOURCE path_to_db_sql_file_on_your_local;

评论

0赞 klewis 7/12/2017
在将我的 sql 文件放在正确的 /bin 目录视图 Windows 资源管理器中后,这使用 MySQL 命令行客户端对我有用。谢谢
3赞 Jaskaran Singh 12/19/2017
有点慢,但不会在两者之间停下来,不要说MySQL服务器已经消失了。
44赞 Francesco Casula 8/24/2016 #24

我认为值得一提的是,您还可以加载一个 gzipped(压缩)文件,如下所示:zcat

zcat database_file.sql.gz | mysql -u username -p -h localhost database_name

评论

0赞 Melebius 3/10/2022
在 macOS 上,我不得不使用 而不是 .gzcatzcat
7赞 Paul Leclerc 12/29/2016 #25

有关信息,我只有默认的 root + 没有密码。它不适用于之前的所有答案。

  • 我创建了一个具有所有权限和密码的新用户。成功了。

  • -ppassword 不带空格。

47赞 Adeleke Akinade 1/5/2017 #26

若要将数据库转储到 SQL 文件中,请使用以下命令。

mysqldump -u username -p database_name > database_name.sql

若要将 SQL 文件导入数据库(请确保与 SQL 文件位于同一目录中或提供文件的完整路径),请执行以下操作:

mysql -u username -p database_name < database_name.sql
8赞 ChuckCottrill 2/25/2017 #27

在命令行上提供凭据不是一个好主意。上面的答案很好,但忽略了提及

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

其中 etc/myhost.cnf 是包含主机、用户、密码的文件,您可以避免在命令行上公开密码。下面是一个示例,

[client]
host=hostname.domainname
user=dbusername
password=dbpassword

评论

0赞 George Birbilis 3/30/2018
命令行是不稳定的(除非你有键盘记录器或背后的人,否则我希望它在本地执行时是安全的),而文件是永久性的,因此应该有更高的风险,尤其是当它是纯文本时
2赞 George Birbilis 3/30/2018
...但是,mysql命令确实警告“mysql:[警告]在命令行界面上使用密码可能不安全。
5赞 Fery W 3/13/2017 #28

我正在使用 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回答

8赞 jozxyqk 8/9/2017 #29

vladkras对如何在MySQL中使用命令行导入SQL文件?的回答类似。

对我来说,主要区别:

  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

我正在使用 MariaDB 运行 Fedora 26。

评论

0赞 Peter Mortensen 9/19/2021
但这不是从问题的精神中来自命令行。它以交互方式使用 MySQL shell。
76赞 Kasun Siyambalapitiya 9/1/2017 #30

如果已有数据库,请使用以下命令导入 或 文件:dumpsql

mysql -u username -p database_name < file.sql

如果没有,则需要在MySQL中创建相关的数据库(空),首先通过在终端或cmd中运行以下命令登录控制台MySQL

mysql -u userName -p;

出现提示时,请提供密码。

接下来,创建一个数据库并使用它:

mysql>create database yourDatabaseName;
mysql>use yourDatabaseName;

然后将 或 文件导入数据库sqldump

mysql> source pathToYourSQLFile;

注意:如果您的终端不在 or 文件所在的位置,请使用上面的相对路径。dumpsql

17赞 Siva Praveen 12/19/2017 #31

用:

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

评论

0赞 Jonny 3/28/2019
对于 Centos:yum install pv
0赞 Ashok G 12/9/2022
“-p password”之间不应有空格,命令应类似于“mysql -u username -ppassword dbname < sqlfile”,否则“mysql -u username -p db < sqlfile”,这将提示输入密码
8赞 NeeruKSingh 1/5/2018 #32

导入数据库:

mysql -u 用户名 -p database_name < /file path/file_name.sql

从数据库导出:

mysqldump -u 用户名 -p database_name > /file path/file_name.sql

执行这些命令后,系统将提示您输入MySQL密码。

1赞 Edgencio Da Calista 2/13/2018 #33

如果要导入到本地数据库服务器,可以执行以下操作:

mysql -u database_user -p < database_file.sql

对于远程数据库服务器,请执行以下操作:

mysql -u database_user -p -h remote_server_url < database_file.sql
48赞 David 3/22/2018 #34

虽然这里的大多数答案只提到了简单的命令

mysql -u database_user -p [db_name] < database_file.sql

如今,数据库和表具有 UTF8 排序规则是很常见的,而此命令是不够的。
在导出的表中使用 utf8-collation,需要使用此命令:

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/show-collation.html

还有一条评论提到,如果数据库从未存在过,则必须首先创建一个空数据库。在某些情况下,这可能是正确的,但取决于导出文件。如果导出的文件已经包含用于创建数据库的命令,则永远不必在单独的步骤中创建数据库,这甚至可能导致导入错误。因此,在导入时,建议先查看文件以了解其中包含哪些命令,在导出时,建议注意设置,尤其是在文件非常大且难以在编辑器中阅读的情况下。

该命令还有更多参数,此处列出并进行了说明:

https://dev.mysql.com/doc/refman/5.7/en/mysql-command-options.html

如果您使用其他数据库版本,请考虑也搜索相应版本的手册。上述链接是指MySQL版本5.7。

编辑:
相同的参数也适用于。因此,虽然导出和导入的命令不同,但提到的参数却不同。 然而,手册中有一个特殊的网站,描述了以下选项: https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html
mysqldumpmysqldump

11赞 Md Shariful Islam 4/8/2018 #35

您可以尝试此查询。

出口:

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/

3赞 Mahdi Bashirpour 8/9/2018 #36

如果在 Windows 上使用 XAMPP,则首先必须手动创建数据库,然后运行以下命令:

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

然后输入密码

2赞 Ripudaman Singh 9/24/2018 #37

对于 Windows 操作系统,您可以使用以下命令从 SQL 转储导入数据。

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

其中是用户名,是MySQL密码。然后输入您的密码并等待数据导入。-u-p

2赞 Rafael Andrs Cspedes Basterio 10/12/2018 #38

您可以使用:

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

例:

mysql -uroot -proot db < db.sql
4赞 Hamfri 3/11/2019 #39

如果将数据导入 Docker 容器,请使用以下命令。调整用户 (-u)、数据库 (-D)、端口 (-P) 和主机 (-h) 以适合您的配置。

mysql -u root -D database_name -P 4406 -h localhost --protocol=tcp -p < sample_dump.sql

评论

0赞 Himanshu Upadhyay 3/26/2019
我需要提及主机名,因为就我而言,localhost 不是数据库主机名。所以这个语法帮助了我。投票支持。
4赞 Dev Semicolon 5/22/2019 #40

通过终端导入数据库

导航到 .sql 文件所在的文件夹

然后运行以下命令:

mysql -u database_user_name -p database_name < sql_file_name.sql

它会要求输入密码。输入数据库密码。将数据导入数据库需要几秒钟的时间。

1赞 Shabeer K 6/23/2019 #41

在 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

评论

0赞 Peter Mortensen 9/19/2021
但这不是从问题的精神中来自命令行。它以交互方式使用 MySQL shell。
-3赞 Amarat 7/11/2019 #42

试试这个:

cd C:\xampp\mysql\bin
mysql -u root -p database_name --force < C:\file.sql

评论

3赞 Nico Haase 12/10/2019
请在您的答案中添加一些解释 - 为什么给定的调用解决了语法错误?
-4赞 Naveen Gaur 7/29/2019 #43
  1. 转到您的 或 目录wampxampp

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

4赞 GabrieleMartini 12/10/2019 #44

此行导入本地数据库中的 Linux 下的转储文件。

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

此行导入远程数据库中 Linux 下的转储文件。注意:用于端口,如果MySQL端口与默认端口不同,则为必填项。-P

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

注意:密码包含空格,这就是单引号的原因。只需更改在 Windows () 下使用命令的路径样式即可。C:\windows\path\dump_file.sql

20赞 user777388 2/17/2020 #45

要导出数据库:

mysqldump -u username -p database_name > file.sql

要导入数据库:

mysql -u username -p database_name < file.sql
0赞 Abid Shah 7/1/2020 #46

如果您使用的是 XAMPP,请转到文件夹 → → 。在此处打开 cmd 并粘贴以下内容:xapppmysqlbin

mysql -u root -p dbname < dbfilename.sql
2赞 nafischonchol 9/23/2020 #47
  • 在MySQL中创建数据库。

  • 然后转到您的计算机目录 C:\xampp\mysql\bin,在地址栏中输入,然后点击 .cmdEnter

  • 解压缩 SQL 文件

  • 然后写:并按 。mysql -u root -p dbnameEnter

  • 写入:源 sql.file。喜欢Source C:\xampp\htdocs\amarbazarltd\st1159.sql

评论

0赞 Clinton 5/26/2021
支持让 cmd 在正确目录中打开的 Windows 技巧。
0赞 Peter Mortensen 10/6/2021
回复“转到您的计算机目录”:您的意思是在文件资源管理器中吗?
0赞 nafischonchol 1/27/2022
@PeterMortensen 是文件资源管理器
2赞 BugsCreator 12/5/2020 #48

简单。只需在 cmd 中使用以下命令:

use databasename
\. C:/test/data.mysql

评论

0赞 Peter Mortensen 10/6/2021
据我所知,cmd(Windows)中没有“使用(尽管有NET USE)。你的意思是在MySQL客户端内部吗?还是别的什么?你能详细说明一下吗?请通过编辑(更改)您的答案来回复,而不是在评论中(没有“编辑:”,“更新:”或类似内容 - 答案应该看起来像今天写的一样)。
39赞 Madhusanka Edirimanna 12/7/2020 #49

若要导入数据库,请使用以下命令。

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

评论

0赞 Mladen 1/19/2021
这实际上对我有用。4000+票的建议没有。
0赞 Zdeněk Gromnica 2/8/2021
即使在 Windows 上,您也需要使用正斜杠 (/),例如 E:/test/dump.sql 而不是 E:\test\dump.sql 或双反斜杠 (\\),因为转义,即 E:\\test\\dump.sql
0赞 Peter Mortensen 9/19/2021
但这不是从问题的精神中来自命令行。它以交互方式使用 MySQL shell。
0赞 reformed 1/27/2023
source不是用于导入数据库,而是用于运行少量 SQL 查询。stackoverflow.com/a/6163842
4赞 skoll 1/10/2021 #50

使用 MySQL Secure Shell:

mysqlsh -u <username> -p -h <host> -D <database name> -f dump.sql
0赞 Chanuka 7/1/2021 #51

您可以轻松使用这些步骤。

  1. 将 SQL 文件下载到“mysql/bin”文件夹中。

  2. 使用CMD打开“mysql / bin”文件夹。

  3. 如果不存在所需的数据库,则首先创建数据库。

  4. 在 CMD 中键入此命令并运行:

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

    “file.sql”是要插入到目标数据库中的 SQL 文件。 例子: 如果您的“密码”是“1234”,“user”是“root”,“dbname”是“test”:

     mysql -u root -p1234 test < file.sql
    

    如果你的“password”是null,“user”是“root”,“dbname”是“test”

     mysql -u root test < file.sql
    
  5. 检查目标数据是否成功上传。

此方法可用于使用 CMD 中的 SQL 文件上传大尺寸数据。

请确保在步骤 4 中,如果使用该密码,请插入“-p”作为单个单词,不带任何空格。

0赞 Shrm 1/28/2023 #52

大多数答案都包含>或<字符,这并不是适用于所有情况的正确方法。我建议使用 mysqlimport,而您可以使用 mysqldump 制作转储文件。

这些工具将与 mysql 服务一起安装,并且都可用于在 MySQL 中的一个数据库或多个数据库中进行备份和恢复。

这是您可以利用它来导入 mysql 的方法

mysqlimport -u database_admin -p database_name ~/path/to/dump_file.sql

如果您没有,请通过以下方式安装:

sudo apt 更新 sudo apt 安装 mysql 客户端

以同样的方式,对转储文件进行备份,如下所示:

mysqldump [选项] --result-file=dump_file.sql

-1赞 Mostafa Mahmoud 5/15/2023 #53

1-将数据库文件复制到C:\xampp \ mysql \ bin

2-从同一路径打开终端

3-输入端子

.\mysql.exe -uroot

4- type //更改您的数据库名称use DB_NAME;

5型source DB_FILE.sql;

2赞 UTHAYAKUMAR M 9/17/2023 #54
mysql -u myuser -p mydatabase < mydata.sql

替换为 MySQL 用户名、MySQL 数据库的名称和 SQL 文件的名称。
请确保 SQL 文件的格式正确,并且不包含任何可能导致导入过程中出现问题的语法错误。
myusermydatabasemydata.sql

1赞 Super Kai - Kazuya Ito 10/28/2023 #55

例如,使用 mysqldump 导出架构和数据或仅导出数据库表的架构,如下所示。*我的回答解释了如何导出数据库表的架构和数据:applebackup.sql

mysqldump -u john -p apple > backup.sql

艺术

mysqldump -u john -p -d apple > backup.sql

或者,您仅导出特定表和数据库的数据,使用 INSERT 语句,其列名如下所示。*默认情况下,语句没有列名,我的回答解释了如何仅导出数据:personanimalapplebackup.sqlINSERT

mysqldump -u john -p -t -c apple person animal > backup.sql

然后,您需要在运行上述命令后输入密码:

Enter password:

现在,您可以使用mysql导入数据库,如下所示。*导入模式和数据或仅导入模式时,所选数据库必须存在,仅导入数据、所选数据库和表时必须存在,否则会出现错误,仅导入数据时,需要从苹果数据库中删除所有数据,否则会出现错误。文档解释了如何导入数据库,我的答案解释了如何创建数据库:backup.sqlorangeorangeorange

mysql -u john -p orange < backup.sql

艺术

mysql -u john -p -D orange < backup.sql

艺术

mysql -u john -p --database orange < backup.sql

然后,您需要在运行上述命令后输入密码:

Enter password:

或者,登录后,您可以使用或选择数据库导入数据库,如下所示:backup.sqlorange\.sourceorange

mysql -u john -p
...
mysql> USE orange;
mysql> \. backup.sql

艺术

mysql -u john -p
...
mysql> USE orange;
mysql> source backup.sql

请注意,如果不选择数据库,则无法导入数据库,如下所示:backup.sqlorangeorange

因此,下面出现错误:

mysql -u john -p < backup.sql

第 22 行出现错误 1046 (3D000):未选择数据库

而且,以下这些出现错误:

mysql -u john -p
...
mysql> \. backup.sql

艺术

mysql -u john -p
...
mysql> source backup.sql

错误 1046 (3D000):未选择数据库

此外,您可以通过将密码(例如,)设置为 -p(--password=) 来导入数据库,而无需密码提示,如下所示。*不要在()之后放置任何空格,因为存在错误,我的答案详细解释了如何在没有密码提示的情况下导入数据库:backup.sqlorangebanana-p--password=

mysql -u john -pbanana orange < backup.sql
0赞 Hashim Aziz 11/22/2023 #56

最快的方式

我使用下面的解决方案在不到 10 小时的时间内导入了一个包含近 300M 条记录的 100GB 数据库(不是错别字),因此可以肯定地说它会立即撕裂平均 SQL 转储。

首先,你应该确保你的数据库充分利用了你的硬件 - 大多数开箱即用的SQL安装被设置为尽可能轻量级(因此效率低下)。假设您使用的是 InnoDB(如果使用 XAMPP,您将使用InnoDB),请编辑文件中的以下变量:my.ini

innodb_buffer_pool_size=8G // Change to 50-75% of your system's RAM, depending on how much you need to keep free 
innodb_log_file_size=2G // Change to 25% of the above value
innodb_log_buffer_size=8M

如果使用的是其他数据库引擎,则需要找到等效的配置选项并相应地对其进行调整。

完成这些配置更改后,重新启动服务器并在命令行中运行以下命令 - 尽管它使用的是 CLI,但它只是执行普通的 MySQL,因此您也可以将其 SQL 部分直接复制粘贴到数据库工具的 SQL 选项卡中。mysql

mysql -u root -e "CREATE DATABASE IF NOT EXISTS <database_name>; USE <database_name>; \ 
SET FOREIGN_KEY_CHECKS = 0; SET UNIQUE_CHECKS = 0; SET AUTOCOMMIT = 0; \
source <file_name>; SET UNIQUE_CHECKS = 1; SET FOREIGN_KEY_CHECKS = 1; COMMIT;"
0赞 Pritam Chaudhari 12/4/2023 #57

使用 yourdb;数据库名称
SOURCE D:/您的文件夹路径/文件夹/文件导入.sql;