gpt4 book ai didi

bash - Postgres 命令行语句 : INSERT complains about non-existing column

转载 作者:行者123 更新时间:2023-11-29 13:37:23 24 4
gpt4 key购买 nike

我有以下脚本,它通过 ssh 连接到远程服务器并在其 Postgresql 数据库上发出 SQL 语句:

#!/bin/bash
db_query() {
app_server="$1"
sql_stmt="$2"
psql_cmd="psql -d vdc --pset tuples_only -c '$sql_stmt'"
rows_count=`ssh $app_server "sudo su - postgres -c \"$psql_cmd\""`

echo "DB_QUERY: rows_count = $rows_count"
}

现在我尝试对下表发出 SELECT 和 INSERT 语句:

CREATE TABLE pb_properties
(
c_name character varying(255) NOT NULL,
c_value character varying(255),
CONSTRAINT pb_properties_pkey PRIMARY KEY (c_name)
)

如果我执行 SELECT 语句,此函数可以正常工作:

#!/bin/bash
source db_query.sh
db_query staging "SELECT * FROM pb_properties;"

>> Output: DB_QUERY: rows_count = support-email | test@test.com

但如果我执行 INSERT 语句,它就不起作用:

#!/bin/bash
source db_query.sh
db_query prestaging "INSERT INTO pb_properties (c_name, c_value) VALUES ('support-email', 'test@test.com');"

>> Output:
>>ERROR: column "testname" does not exist
>>LINE 1: ...SERT INTO pb_properties (c_name, c_value) VALUES (testname, ...
^
>>DB_QUERY: rows_count =

现在如何使用 db_query 函数执行成功的 INSERT 语句?我已经尝试过以多种方式屏蔽我试图插入的值,但它们都不起作用。我想这与通过 SSH 运行 sql 命令的组合以及我使用的不同引号 `、"和 ' 有关。

最佳答案

这是一个代码示例,您可以使用它来消除对 tmp 文件的依赖:

echo "$sql_stmt" | ssh $app_server "sudo su - postgres -c '/usr/local/pgsql/bin/psql -A -t -U postgres $database'"

关于bash - Postgres 命令行语句 : INSERT complains about non-existing column,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6070515/

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