如何在终端中使用MySQL导入数据库?

434

如何在终端使用mysql导入数据库?

我找不到准确的语法。

21个回答

876

假设您正在使用Linux或Windows控制台:

提示输入密码:

mysql -u <username> -p <databasename> < <filename.sql>

输入密码(不安全):
mysql -u <username> -p<PlainPassword> <databasename> < <filename.sql>

例子:

mysql -u root -p wp_users < wp_users.sql

mysql -u root -pPassword123 wp_users < wp_users.sql

参见:

4.5.1.5. 从文本文件执行SQL语句


注意:如果您使用的是Windows操作系统,则在执行命令之前,您需要在CMD中cd(更改目录)到MySQL/bin目录。


146
除了你不应该将密码作为CLI参数传递外,+1。相反,只需指定“-p”选项,并在提示后手动输入密码。 - St.Woland
15
如果您想通过 shell 输入密码,请在“-p”和密码之间不要加空格。 - Kethryweryn
9
在终端远程主机上使用以下命令:mysql -u username -h hostname -ppassword databasename < filename.sql,其中username是用户名,hostname是主机名,password是密码,databasename是数据库名称,filename.sql是包含SQL语句的文件名。请注意,这个命令将SQL文件导入到指定的数据库中。 - Shaik Rilwan
8
如果您已经进入了MySQL命令提示符(mysql>),那么只需输入source full_path_of_file即可(注意:在导入之前,请使用USE DATABASE_NAME命令选择数据库)。 - Ankit Sharma
3
@Pekka웃,如果我们使用“source”命令,我们可以看到信息消息(“受影响的行数”)和错误消息。但是使用您的解决方案,我们如何使用“<文件名.sql”查看消息? - Pacerier
显示剩余4条评论

167

Windows下推荐的方法:

  1. 打开控制台并启动交互式MySQL模式

  2. use <你的数据库名称>;

  3. source <你的.sql文件路径>


2
为什么文件名后面不需要加分号? - Nabeel Khan
7
大多数 SQL 语句需要在语句末尾加上 ;,但是有少数例外情况,包括 USESOURCE。为了使内容更加易懂,本文翻译了一句英文。 - Simon East
1
我想知道这个方法是否比将文件通过管道传输(就像被接受的答案中所述)更快。我的猜测是是的 - Simon East
不需要使用"use <name_of_your_database>",对吗? https://dev.mysql.com/doc/refman/5.7/en/mysql-batch-commands.html - MartianMartian
@Martian2049,当我省略了USE <database>时,它没有导入数据库(Mysql版本14.14)。 - Cloud Cho
显示剩余2条评论

38

mysql -u <USERNAME> -p <DB NAME> < <dump file path>

-u - 代表用户名。

-p - 代表提示输入密码。

例如: mysql -u root -p mydb < /home/db_backup.sql

你也可以在-p之后提供密码,但出于安全考虑,不建议这样做。密码将会明文显示在命令行上。


2
这就是我要找的答案。"<" 这个符号是我留下的。 - Pravinraj Venkatachalam
如果mydb不存在,那么在我们执行mysqldump命令时如何动态创建它? - अक्षय परूळेकर

18

直接从var/www/html

mysql -u username -p database_name < /path/to/file.sql

从mysql内部:

mysql> use db_name;
mysql> source backup-file.sql

13

打开终端,然后

 mysql -u root -p

 eg:- mysql -u shabeer -p

然后创建一个数据库

 mysql> create database "Name";

 eg:- create database INVESTOR;

然后选择那个新的数据库 "INVESTOR"

 mysql> USE INVESTOR;
从机器中选择 SQL 文件的路径。
 mysql> source /home/shabeer/Desktop/new_file.sql;

然后按回车键,等待一段时间,如果一切都执行完毕,那么

 mysql> exit

输入图像描述


8

以下命令适用于Ubuntu 16.04,我不确定它是否适用于其他Linux平台。

导出SQL文件:

$ mysqldump -u [user_name] -p [database_name] > [database_name.sql]  

示例: mysqldump -u root -p max_development > max_development.sql

导入SQL文件:

$ mysqldump -u [user_name] -p [database_name] < [file_name.sql]

例子:mysqldump -u root -p max_production < max_development.sql

注意:SQL文件应该在同一个目录下存在


2
我认为你的导入命令是错误的。导入应该使用“mysql”命令。而“mysqldump”则是用于导出。 - JamesHoux

7

在终端中输入

mysql -uroot -p1234; use databasename; source /path/filename.sql

这样可以查看导入日志。 - Thiago Macedo

7

从终端:

mysql -uroot -p --default-character-set=utf8 database_name </database_path/database.sql

6

当我的SQL数据分成文件并以以下名称命名时,我通常使用此命令进行加载:000-tableA.sql、001-tableB.sql、002-tableC.sql。

for anyvar in *.sql; do <path to your bin>/mysql -u<username> -p<password>  <database name> < $anyvar; done

在OSX终端上运行良好。


5

如何通过命令行加载数据库

说明:

  1. 首先创建一个数据库或者使用已存在的数据库,我这里使用了一个已存在的数据库

  2. 通过 <name of database> = ClassicModels 并使用运算符 <database = sakila-data.sql 路径来加载数据库。

  3. 通过运行 show tables,我得到了表格列表,如您所见.

注意:在我的情况下,我得到了一个 错误 1062,因为我试图再次加载相同的东西。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接