从bash脚本更新mysql db中的数据

时间:2015-02-11 19:02:16

标签: mysql bash shell insert

这是我第一次尝试使用可执行的.sh文件在mysql数据库中插入一些信息。

我使用以下bash脚本但它无效。显然,为了便于理解,下面的大多数变量已被替换和简化。

#!/bin/bash

mysql -D mydbname -u mydbuser -p mydbpass <<EOF
INSERT INTO mytable (mycolumn) VALUES ('myvalue') WHERE id = '13';

exit;

您可以看到我只想在id = 13的行中插入我的值,并且该行确实存在。

我不认为我正确地格式化查询吗?

编辑:好了以后的建议我现在已经得到了这个但是它仍然没有用?

#!/bin/bash
mysql -D mydbname -u mydbuser -p mydbpass <<EOF
UPDATE mytable SET mycolumn = 'myvalue' WHERE id = '13';
exit;

4 个答案:

答案 0 :(得分:6)

经过一些试验和错误后找到答案。

以防万一其他人想要做同样的事情:

#!/bin/bash

mysql -u username -puserpass dbname -e "UPDATE mytable SET mycolumn = 'myvalue' WHERE id='myid'";

请注意,-p与您的密码 -puserpass 之间没有空格如果您在那里放置空格 -p userpass ,它会提示您输入密码。< / p>

希望它对某人有所帮助;)

答案 1 :(得分:1)

解决方案就像上面帖子中指定的魅力一样。您还可以在指定dbname时使用-D选项。

#!/bin/bash

mysql -u username -puserpass -D dbname -e "UPDATE mytable SET mycolumn = 'myvalue' WHERE id='myid'";

有关选项的其他参考,请参阅以下链接:https://www.shellhacks.com/mysql-run-query-bash-script-linux-command-line/

答案 2 :(得分:0)

您的查询不起作用,因为您没有在脚本末尾键入EOF。请参阅下面的示例。

#!/bin/bash

mysql -u root -ppassword DB_NAME <<EOF
SELECT * FROM CUSTOMERS WHERE NAME='YOURNAME';
SELECT * FROM ANOTHER_TABLE WHERE SOMETHING_ELSE;
... more queries
EOF

请注意,如果连接不需要密码,则可以跳过-ppassword参数。

答案 3 :(得分:0)

这也是对我有用的方法:像这样转义引用\“

mysql -u userName --password=yourPassword -D databaseName -e "UPDATE tableName SET columnName = \"${variable}\" WHERE numberColumn = \"${numberVariable}\""