将SQL文件导入mysql


190

我有一个名为的数据库nitm。我没有在那里创建任何表。但是我有一个SQL文件,其中包含数据库的所有必需数据。该文件nitm.sql位于中C:\ drive。该文件的大小约为103 MB。我正在使用wamp服务器。

我已在MySQL控制台中使用以下语法导入文件:

mysql>c:/nitm.sql;

但这没有用。



Answers:


406

从mysql控制台:

mysql> use DATABASE_NAME;

mysql> source path/to/file.sql;


如果您指的是相对路径,请确保路径前没有斜杠...我花了一段时间才意识到这一点!大声笑


36
如果要进行相对引用,则在路径之前不需要斜杠。如果您要从根本上走下去,那么您会,即/home/user/file.sql
Wes Johnson

5
可惜没有办法添加收藏夹的答案了:(
baldrs 2013年

4
在Chrome中,它们称为书签,您可以点击地址栏中的星标;)
Andrew

2
@ArseniuszŁozicki添加问题,您将能够得到答案:)我就是这样做的。
mandza 2014年

2
只是要添加到此答案,它path/to/file.sql是mysql 客户端所在的本地文件系统路径。有时候,MySQL服务器希望路径位于服务器端,IE SELECT ... INTO OUTFILE会将文件拖放到MySQL服务器的路径中!
Devy

90

最后,我解决了这个问题。我将“ nitm.sql”文件放在“ mysql”文件夹的“ bin”文件中,并使用以下语法。

C:\wamp\bin\mysql\mysql5.0.51b\bin>mysql -u root nitm < nitm.sql

这行得通。


8
这不是从OP要求的mysql控制台,而是从控制台到mysql。Robert Anthony Tribiana的回答确实描述了如何从mysql控制台执行此操作。
halfpastfour.am 2014年

这不是解决问题的确切方法,也不是解决方案。
Ashish Ratan

4
你们知道这是OP回答的吗?
Wes

如果您的mysql需要密码,则方法无效,您需要@d -_- b的最高答案
shellbye 2016年

52

如果您使用的是沼泽,可以尝试一下。只需use your_Database_name先输入即可。

  1. 单击您的wamp服务器图标,然后寻找MYSQL > MSQL Console并运行它。

  2. 如果您没有密码,只需按Enter并输入:

    mysql> use database_name;
    mysql> source location_of_your_file;

    如果您有密码,则将提示您输入密码。首先输入密码,然后输入:

    mysql> use database_name;
    mysql> source location_of_your_file;

location_of_your_file 应该看起来像 C:\mydb.sql

所以推荐是mysql> source C:\ mydb.sql;

这种导入sql dump对于BIG SQL FILE非常有用。

我将我的文件复制mydb.sq到目录。C:它应该是大写C:以便运行

就是这样。


1
这个答案似乎是WAMP特定的,而显示的代码可在任何运行MySQL的环境中运行,您可以在该环境中通过终端或控制台访问MySQL。
halfpastfour.am 2014年

26

在Windows中,如果以上建议给您一个错误(找不到文件或未知db),您可能希望将正斜杠加倍:

在mysql控制台中:

mysql> use DATABASE_NAME;

mysql> source C://path//to//file.sql;

1
单斜杠在Windows计算机中对我有用。
Manoj Shrestha

17

好的,我正在使用Linux,但我认为Windows也是如此。您可以直接在命令提示符下执行此操作

> mysql -u <user name> -p<password> <database name> < sqlfilename.sql

或者在mysql提示中,您可以使用:

mysql>source sqlfilename.sql

但是,这两种方法在它们显示的结果中都有其自身的好处。在第一种方法中,脚本在遇到错误后立即退出。更好的是,它告诉您发生错误的源文件中的确切行号。但是,它仅显示错误。如果没有遇到任何错误,脚本将显示NOTHING。这可能有点令人不安。因为您最常运行带有一堆命令的脚本。

现在第二种方法(在mysql提示符下)的好处是,它为脚本中的每个不同的MySQL命令显示一条消息。如果遇到错误,它将显示mysql错误消息,但会继续执行脚本。这样做可能很好,因为您可以在再次运行脚本之前返回并修复所有错误。缺点是它不会在脚本中显示遇到错误的行号。这可能会有点痛苦。但是错误消息具有描述性,因此您可能可以找出问题所在。

我(其中之一)更喜欢直接从OS命令行方法。


9

如果您使用的是xampp

C:\xampp\mysql\bin\mysql -uroot -p nitm < nitm.sql

7

你几乎在那里使用

mysql> \. c:/nitm.sql;

您也可以通过以下方式获得帮助

mysql> \?

1
这没用。当我用mysql> \。c:/nitm.sql; ,它引发了错误,例如无法打开文件'c:\ nitm.sql;',错误:2
kushalbhaktajoshi

您是否尝试过这种变化?某些应用程序尊重C:\ nitm.sql
Lmwangi 2011年

另请注意,不需要最后一个分号。因此将其删除。另一个选项是'cd c:',然后尝试“ \。nitm.sql”
Lmwangi 2011年

1
键入之前请三思。'cd c:'是DOS提示符而不是mySql控制台的命令。
2011年

1
mysql> \. ~/Downloads/backups/file.sql 在mysql>内完美运行,并且从终端coosal回答也可以。
gmuhammad 2012年

6

对于XAMPP上的localhost。打开一个cmd窗口并输入

cd C:\xampp\mysql\bin
mysql.exe -u root -p

注意!-p后无分号 输入密码并输入

use database_name;

选择所需的数据库。

检查你的桌子在那里

show tables;

从您的sql文件导入

source sqlfile.sql;

我已将文件放在C:\ xampp \ mysql \ bin位置,以免与sql文件的位置混淆。



3

别忘了使用

charset utf8

如果您的sql文件位于utf-8中:)

因此,您需要执行以下操作:

命令文件

mysql -u root

mysql>字符集utf8

mysql>使用mydbname

mysql>源C:\ myfolder \ myfile.sql

祝好运 ))


3

在Linux中,在启动mysql之前,我导航到了包含.sql文件的目录。现在,系统光标与文件位于相同的位置,并且您不需要路径。使用源myData.sql,其中将我的日期替换为文件名。

cd whatever directory

mysql - p

连接目标数据库

source myData.sql

完成了


2

从命令行(cmd.exe,而不是从mysql shell中)尝试如下操作:

type c:/nite.sql | mysql -uuser -ppassword dbname

我尚未为数据库创建任何密码,因此在密码字段中为空白。而且我使用了上面的语法,例如c:/nitm.sql | mysql -u root -p nitm,但这也不起作用。你能帮我更多吗?
kushalbhaktajoshi

省略-p也不起作用。不会将诸如“ c:”之类的引发错误识别为内部或外部命令,可操作程序或批处理文件。
kushalbhaktajoshi

2

转储中是否包含您的MySQL版本不支持的功能?您也可以尝试删除开始(和结束)的MySQL注释SET语句。

我不知道您的转储是否来自Linux版本的MySQL(行尾)?


我已经删除了mysql注释的SET语句。但是仍然会发生错误。
kushalbhaktajoshi

您可以尝试登录到MySQL命令外壳,然后使用use语句:“ source c:\ nite.sql”。不要忘记选择正确的数据库。
Maickel'3

非常感谢您的努力。谢谢。
kushalbhaktajoshi

2

我已将Wamp服务器安装在D:驱动器中,所以您必须从ur命令行转到>:

D:\>cd wamp
D:\wamp>cd bin
D:\wamp\bin>cd mysql
D:\wamp\bin\mysql>cd mysql5.5.8 (whatever ur verserion will be displayed here use keyboard Tab button)
D:\wamp\bin\mysql\mysql5.5.8>cd bin
D:\wamp\bin\mysql\mysql5.5.8\bin>mysql -u root -p password db_name < "d:\backupfile.sql"

这里的root是我的phpmyadmin的用户,密码是phpmyadmin 的密码,因此,如果您尚未为root设置任何密码,而在那个地方没有任何输入,则 db_name是数据库(要进行备份的数据库),backupfile.sql是您要从中备份数据库文件,也可以将备份文件位置(d:\ backupfile.sql)从更改为计算机上的其他任何位置


1
mysql>c:/nitm.sql;

这样会将mysql命令的输出写入“ nitm.sql;”。(“;”应该做什么?)假设您已经拥有原始文件的副本(在覆盖之前),然后:

mysql < c:/nitm.sql

这也不起作用。它引发了类似ERROR 1064 <42000>的错误:您的SQL语法有错误。检查与您的MySql服务器版本相对应的手册以获取正确的语法,以在第1行的'mysql <c:/nitm.sql'附近使用
kushalbhaktajoshi,2011年

1

导出特定的数据库

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

这将导出CCR和KIT数据库...

将所有导出的数据库导入到特定的Mysql实例(您必须位于转储文件所在的位置)

djimi:> mysql --user=root --host=localhost --port=3306 --password=test < ccr_kit_local.sql

0

在Windows OS中,以下命令适用于我。

mysql>Use <DatabaseName>
mysql>SOURCE C:/data/ScriptFile.sql;

文件名周围没有单引号或双引号。路径将包含“ /”而不是“ \”。


0

对于那些努力完成此工作的人,请尝试在SO上找到的所有可能答案。这是在运行Windows 2012 R2的VPS上对我有用的内容:

  1. 将您的sql文件放到bin所在的任何位置 C:\Program Files\MySQL\MySQL Server 8.0\bin

  2. 打开Windows命令提示符(cmd)

  3. C:\Program Files\MySQL\MySQL Server 8.0\bin > mysql -u [username] -p
  4. 输入密码
  5. 运行命令use [database_name];
  6. 使用命令源导入文件 C://Program Files//MySQL//MySQL Server 8.0//bin//mydatabasename.sql

它为我做到了,因为其他一切都失败了。它也可能对您有帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.