use*_*432 372 mysql command-line
我想在MySQL中执行包含SQL查询的文本文件.
我试图运行source /Desktop/test.sql并收到错误:
mysql>.\ home\sivakumar\Desktop\test.sql错误:无法打开文件'\ home\sivakumar\Desktop\test.sql',错误:2
对我做错了什么的想法?
Tho*_*rds 402
如果您在MySQL命令行mysql>,则必须将SQL文件声明为source.
mysql> source \home\user\Desktop\test.sql;
Run Code Online (Sandbox Code Playgroud)
Eug*_*eck 142
你有很多选择:
mysql -h hostname -u user database < path/to/test.sqlPau*_*sch 117
您可以使用以下命令执行已在文本文件中编写的mysql语句:
mysql -u yourusername -p yourpassword yourdatabase < text_file
Run Code Online (Sandbox Code Playgroud)
如果尚未创建您的数据库,请首先使用以下命令登录您的mysql:
mysql -u yourusername -p yourpassword yourdatabase
Run Code Online (Sandbox Code Playgroud)
然后:
mysql>CREATE DATABASE a_new_database_name
Run Code Online (Sandbox Code Playgroud)
然后:
mysql -u yourusername -p yourpassword a_new_database_name < text_file
Run Code Online (Sandbox Code Playgroud)
应该这样做!
更多信息:http://dev.mysql.com/doc/refman/5.0/en/mysql-batch-commands.html
Bhu*_*han 50
所有最佳答案都很好.但是为了以防万一有人想在远程服务器上运行从一个文本文件中的查询和结果保存到一个文件中(而不是显示在控制台上),你可以这样做:
mysql -u yourusername -p yourpassword yourdatabase < query_file > results_file
Run Code Online (Sandbox Code Playgroud)
希望这有助于某人.
tal*_*ony 42
我最喜欢的选择是:
mysql --user="username" --database="databasename" --password="yourpassword" < "filepath"
Run Code Online (Sandbox Code Playgroud)
我以这种方式使用它,因为当你用""字符串串起它时,你会避免错误的路径和带空格的错误 - 而且可能会遇到更多我没有遇到过的字符问题.
使用@elcuco评论我建议在[space]之前使用此命令,因此它告诉bash忽略在历史记录中保存它,这将在大多数bash中开箱即用.
如果它仍在历史记录中保存您的命令,请查看以下解决方案:
Zac*_*ith 18
我来这里寻找这个答案,这里是我发现的最适合我的方法:注意我使用的是Ubuntu 16.xx
mysql -u <your_user> - p
source file_name.sql
希望这可以帮助.
小智 18
而不是重定向我会做以下
mysql -h <hostname> -u <username> --password=<password> -D <database> -e 'source <path-to-sql-file>'
Run Code Online (Sandbox Code Playgroud)
这将执行文件 path-to-sql-file
Shu*_*rma 15
将.sql文件的路径指定为:
source c:/dump/SQL/file_name.sql;
Run Code Online (Sandbox Code Playgroud)

小智 14
mysql> source C:\Users\admin\Desktop\fn_Split.sql
Run Code Online (Sandbox Code Playgroud)
不要指定单引号.
如果上述命令不起作用,请将文件复制到c:驱动器,然后重试.如下所示,
mysql> source C:\fn_Split.sql
Run Code Online (Sandbox Code Playgroud)
Ric*_*pie 12
从 linux 14.04 到 MySql 5.7,使用cat通过 mysql 登录的管道命令:
cat /Desktop/test.sql | sudo mysql -uroot -p
Run Code Online (Sandbox Code Playgroud)
您可以使用此方法直接从 Shell 执行许多 MySQL 命令。例如:
echo "USE my_db; SHOW tables;" | sudo mysql -uroot -p
Run Code Online (Sandbox Code Playgroud)
确保用分号 (';') 分隔命令。
我在上面的答案中没有看到这种方法,并认为这是一个很好的贡献。
Jor*_*dez 11
直接从命令行传递密码参数绝不是一个好习惯,它保存在~/.bash_history文件中,可以从其他应用程序访问.
请改用:
mysql -u user --host host --port 9999 database_name < /scripts/script.sql -p
Enter password:
Run Code Online (Sandbox Code Playgroud)
Don*_*ong 10
有很多方法可以做到。
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
Run Code Online (Sandbox Code Playgroud)
如果您从命令行收到错误,请确保您之前已运行
cd {!!>>mysqld.exe home directory here<<!!}
mysqld.exe --initialize
Run Code Online (Sandbox Code Playgroud)
这必须从 mysqld.exe 目录中运行,因此是 CD。
希望这是有帮助的,而不仅仅是多余的。
很可能,你只需要更改斜杠/ blackslash:from
\home\sivakumar\Desktop\test.sql
Run Code Online (Sandbox Code Playgroud)
至
/home/sivakumar/Desktop/test.sql
Run Code Online (Sandbox Code Playgroud)
所以命令是:
source /home/sivakumar/Desktop/test.sql
Run Code Online (Sandbox Code Playgroud)
从mysql命令提示符使用以下内容-
source \\home\\user\\Desktop\\test.sql;
Run Code Online (Sandbox Code Playgroud)
不使用报价单.即使路径包含空格('')也根本不使用引号.
| 归档时间: |
|
| 查看次数: |
659849 次 |
| 最近记录: |