gpt4 book ai didi

sql - 如何使用参数从 bash 脚本运行 SQL 更新字符串?

转载 作者:行者123 更新时间:2023-11-29 14:20:43 25 4
gpt4 key购买 nike

我希望能够通过简单地运行一个以新值作为参数的脚本来更新数据库字段。

ie> ./update.sh 新值

并让它运行带有更新单元格的“新值”的 sql。

目前我打开数据库连接并粘贴此 sql 以进行更新。

UPDATE modules_config_x_roomtypes SET value = 'newvalue' WHERE modules_config_id = (SELECT id FROM modules_config WHERE module_id = (SELECT id FROM modules WHERE name = 'system') AND name = 'theme');

最佳答案

像这样简单的事情似乎可行,除非我误解了需求。请注意,我没有 psql,所以不能给你一个确切的解决方案,而是一个指南。

#!/bin/bash

if [ $# -lt 1 ]
then
echo "USAGE: ./update.sh [newvalue]"
echo " [newvalue] represents the new value to insert into the DB."
exit
fi

NEWVAL=$(echo $1 | sed "s/'/\\\'/g")
SQL="UPDATE modules_config_x_roomtypes SET value = '"$NEWVAL"' WHERE modules_config_id = (SELECT id FROM modules_config WHERE module_id = (SELECT id FROM modules WHERE name = 'system') AND name = 'theme');"
echo "$SQL" | mysql --user=user --password=password

这首先确保你有一个参数,然后转义其中的任何单引号,这样它就不会破坏 SQL 语句,然后将 SQL 回显到 mysql。您必须修改用户并按要求传递或从其他文件获取它们。

如果您需要插入一个空白 ""将作为 arg 工作,但这不处理 null。

您可能还想添加对 sqls 退出代码的检查,以确保更新顺利进行。这只是一些简单的 if 和 $?,但由于这不完全在问题的上下文中,我将把它作为练习留给你完成。

我没有运行 psql 所以我不能说出它在那里工作所需的确切参数,但是从手册页你可以提供选项 -c 来指定要运行的命令,所以你可能会替换 echo 到 mysql,你还必须处理让脚本连接到数据库的问题,但这里有很多问题。

关于sql - 如何使用参数从 bash 脚本运行 SQL 更新字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28437282/

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