gpt4 book ai didi

mysql - 如何从 shell 脚本执行 MySQL 命令?

转载 作者:IT老高 更新时间:2023-10-28 12:50:29 41 4
gpt4 key购买 nike

如何通过 shell 脚本执行 SQL 命令以使其自动化?

我想使用 shell 脚本恢复我在 SQL 文件中收集的数据。我想连接到服务器并恢复数据。该命令在通过 SSH 命令行单独执行时有效。

这是我使用的命令:

mysql -h "server-name" -u root "password" "database-name" < "filename.sql"

这是创建文件 ds_fbids.sql 并将其通过管道传输到 mysql 的 shell 脚本代码。

perl fb_apps_frm_fb.pl
perl fb_new_spider.pl ds_fbids.txt ds_fbids.sql
mysql -h dbservername -u username -ppassword dbname < ds_fbids.sql

这样做的正确方法是什么?

最佳答案

您需要使用 -p 标志来发送密码。这很棘手,因为 -p 和密码之间不能有空格。

$ mysql -h "server-name" -u "root" "-pXXXXXXXX" "database-name" < "filename.sql"

如果您在 -p 之后使用空格,它会使 mysql 客户端以交互方式提示您输入密码,然后它将下一个命令参数解释为数据库名称:

$ mysql -h "server-name" -u "root" -p "XXXXXXXX" "database-name" < "filename.sql"
Enter password: <you type it in here>
ERROR 1049 (42000): Unknown database 'XXXXXXXX'

实际上,我更喜欢将用户名和密码存储在 ~/.my.cnf 中,所以我根本不必将其放在命令行中:

[client]
user = root
password = XXXXXXXX

然后:

$ mysql -h "server-name" "database-name" < "filename.sql"

你的评论:

我一直在命令行和 shell 脚本中运行像上面这样的批处理模式 mysql 命令。很难诊断您的 shell 脚本出了什么问题,因为您没有共享确切的脚本或任何错误输出。我建议您编辑上面的原始问题并提供问题示例。

此外,当我对 shell 脚本进行故障排除时,我会使用 -x 标志,以便查看它是如何执行每个命令的:

$ bash -x myscript.sh

关于mysql - 如何从 shell 脚本执行 MySQL 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8055694/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com