我想在MySQL中执行一个包含SQL查询的文本文件。
我试着运行source /Desktop/test。SQL和收到的错误:
mysql >。回家\ \ sivakumar桌面\ \测试。sql ERROR:无法打开文件 ' \ \ sivakumar \电脑\测试。Sql ',错误:2
你知道我哪里做错了吗?
我想在MySQL中执行一个包含SQL查询的文本文件。
我试着运行source /Desktop/test。SQL和收到的错误:
mysql >。回家\ \ sivakumar桌面\ \测试。sql ERROR:无法打开文件 ' \ \ sivakumar \电脑\测试。Sql ',错误:2
你知道我哪里做错了吗?
当前回答
你可以使用下面的命令来执行已经写入文本文件的mysql语句:
mysql -u yourusername -p yourpassword yourdatabase < text_file
如果你的数据库还没有创建,首先登录到你的mysql使用:
mysql -u yourusername -p yourpassword
然后:
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
其他回答
使用下面的mysql命令提示符-
source \\home\\user\\Desktop\\test.sql;
不要使用报价。即使路径包含空格(' '),也不要使用引号。
我最喜欢的做法是:
mysql --user="username" --database="databasename" --password="yourpassword" < "filepath"
我这样使用它是因为当你用""来串的时候,你可以避免错误的路径和空格的错误,而且可能还有更多我没有遇到过的字符问题。
对于@elcuco注释,我建议在使用此命令之前使用[空格],这样它就会告诉bash忽略在历史中保存它,这将在大多数bash中开箱工作。
如果您的命令仍然保存在历史记录中,请查看以下解决方案:
执行命令时不保留历史记录
额外的安全编辑
如果你想要更加安全,你可以使用以下命令并在命令行输入输入密码:
mysql --user="username" --database="databasename" -p < "filepath"
很可能,你只需要改变斜杠/黑斜杠: 从
\home\sivakumar\Desktop\test.sql
to
/home/sivakumar/Desktop/test.sql
因此,命令将是:
source /home/sivakumar/Desktop/test.sql
从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
请确保使用分号(';')分隔命令。
我在上面的答案中没有看到这种方法,我认为这是一个很好的贡献。
我来这里也是为了寻找这个答案,下面是我发现最适合我的答案:注意,我使用的是Ubuntu 16.x.x
访问mysql使用:
Mysql -u <your_user> - p
在mysql提示符下,输入:
源file_name.sql
希望这能有所帮助。