如何在MySQL中运行SQL脚本?

时间:2012-01-20 10:51:05

标签: mysql command-line

我想在MySQL中执行包含SQL查询的文本文件。

我尝试运行source /Desktop/test.sql并收到错误:

  

的MySQL> 。 \ home \ sivakumar \ Desktop \ test.sql错误:无法打开文件   '\ home \ sivakumar \ Desktop \ test.sql',错误:2

对我做错了什么的想法?

18 个答案:

答案 0 :(得分:370)

如果您在MySQL命令行mysql>,则必须将SQL文件声明为source

mysql> source \home\user\Desktop\test.sql;

答案 1 :(得分:128)

你有很多选择:

  • 使用MySQL命令行客户端:mysql -h hostname -u user database < path/to/test.sql
  • 安装MySQL GUI工具并打开您的SQL文件,然后执行它
  • 如果数据库可通过您的网络服务器获取,请使用phpmysql

答案 2 :(得分:110)

您可以使用以下命令执行已在文本文件中编写的mysql语句:

mysql -u yourusername -p yourpassword yourdatabase < text_file

如果还没有创建数据库,请首先使用以下命令登录mysql:

mysql -u yourusername -p yourpassword yourdatabase

然后:

mysql>CREATE DATABASE a_new_database_name

然后:

mysql -u yourusername -p yourpassword a_new_database_name < text_file

应该这样做!

此处有更多信息:http://dev.mysql.com/doc/refman/5.0/en/mysql-batch-commands.html

答案 3 :(得分:43)

所有最佳答案都很好。但是,如果有人想要从远程服务器上的文本文件中运行查询 AND 将结果保存到文件(而不是在控制台上显示),则可以执行以下操作:

mysql -u yourusername -p yourpassword yourdatabase < query_file > results_file

希望这有助于某人。

答案 4 :(得分:36)

我最喜欢的选择是:

 mysql --user="username" --database="databasename" --password="yourpassword" < "filepath"

我这样使用它是因为当你用&#34;&#34;你避免错误的路径和错误的空间和 - 以及可能更多的问题,我没有遇到过。


使用@elcuco评论我建议在[space]之前使用此命令,因此它告诉bash忽略在历史记录中保存它,这将在大多数bash中开箱即用。

如果它仍在历史记录中保存您的命令,请查看以下解决方案:

Execute command without keeping it in history


额外的安全性修改

如果您想要更加安全,可以使用以下命令并在命令行输入中输入密码:

mysql --user="username" --database="databasename" -p < "filepath"

答案 5 :(得分:15)

我也来这里寻找这个答案,这里是我发现最适合我的方法:注意我使用的是Ubuntu 16.x.x

  1. 使用以下方式访问mysql:
  2. mysql -u <your_user> - p

    1. 在mysql提示符下,输入:
    2. source file_name.sql

      希望这有帮助。

答案 6 :(得分:14)

mysql> source C:\Users\admin\Desktop\fn_Split.sql

不要指定单引号。

如果上述命令无效,请将文件复制到c:驱动器,然后重试。 如下图所示,

mysql> source C:\fn_Split.sql

答案 7 :(得分:13)

将.sql文件的路径指定为:

source c:/dump/SQL/file_name.sql;

See In The Image:

答案 8 :(得分:11)

直接从命令行传递密码参数绝不是一个好习惯,它保存在~/.bash_history文件中,可以从其他应用程序访问。

请改用:

mysql -u user --host host --port 9999 database_name < /scripts/script.sql -p
Enter password:

答案 9 :(得分:8)

com.apple.dt.Xcode

答案 10 :(得分:7)

很可能,您只需要更改斜杠/反斜杠: 从

 \home\sivakumar\Desktop\test.sql

 /home/sivakumar/Desktop/test.sql

所以命令是:

source /home/sivakumar/Desktop/test.sql

答案 11 :(得分:6)

使用 mysql命令提示符 -

中的以下内容
source \\home\\user\\Desktop\\test.sql;

不使用报价单。即使路径包含空格(''),也要使用无引号

答案 12 :(得分:3)

为了供将来参考,我在msql控制台的Windows下,发现这与上述方法有效:

的MySQL&GT;&GT; source c://path_to_file//path_to_file//file_name.sql;

如果您的根驱动器未被调用&#34; c&#34;然后只需要与您的驱动器进行交换。首先尝试反斜杠,如果它们不起作用,请尝试正斜杠。如果它们也不起作用,请确保您拥有完整的文件路径,文件名上的.sql扩展名,如果您的版本坚持使用分号,请确保它在那里并再试一次。

答案 13 :(得分:2)

由于mysql -u yourusername -p yourpassword yourdatabase < text_file无法在远程服务器(亚马逊的EC2)上运行...

确保首先创建数据库。

然后:

mysql --host=localhost --user=your_username --password=your_password your_database_name < pathTofilename.sql

答案 14 :(得分:2)

从Linux 14.04到MySql 5.7,使用cat命令通过mysql登录进行管道传输:

cat /Desktop/test.sql | sudo mysql -uroot -p 

您可以将此方法用于许多直接从Shell执行的MySQL命令。例如:

echo "USE my_db; SHOW tables;" | sudo mysql -uroot -p 

确保使用分号(';')分隔命令。

我在上面的答案中没有看到这种方法,并认为这是一个很好的贡献。

答案 15 :(得分:0)

我遇到了这个错误,并尝试了所有可能无效的建议。

最后,问题是我的文件夹在文件夹名称中有一个空格,在文件夹路径中显示为正斜杠,一旦找到并删除它,它就可以正常工作。

答案 16 :(得分:0)

代替重定向,我将执行以下操作

mysql -h <hostname> -u <username> --password=<password> -D <database> -e 'source <path-to-sql-file>'

这将执行文件到SQL文件的路径

答案 17 :(得分:0)

有很多方法可以做到这一点。

From Workbench: File > Run SQL Script -- then follow prompts

From Windows Command Line:
   Option 1: mysql -u usr -p
             mysql> source file_path.sql
   Option 2: mysql -u usr -p '-e source file_path.sql'
   Option 3: mysql -u usr -p < file_path.sql
   Option 4: put multiple 'source' statements inside of file_path.sql (I do this to drop and recreate schemas/databases which requires multiple files to be run)
             mysql -u usr -p < file_path.sql

如果从命令行中获取错误,请确保您以前已经运行过

cd {!!>>mysqld.exe home directory here<<!!}
mysqld.exe --initialize 

这必须在mysqld.exe目录(因此是CD)中运行。

希望这是有帮助的,而不仅仅是多余的。