这是我第一次尝试使用可执行的.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;
答案 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}\""