gpt4 book ai didi

PostgreSQL:如何从命令行传递参数?

转载 作者:行者123 更新时间:2023-11-29 11:05:00 32 4
gpt4 key购买 nike

我在使用 ? 占位符的脚本中有一个比较详细的查询。我想直接从 psql 命令行(在脚本之外)测试同一个查询。我想避免进入并用实际值替换所有 ?,而是我想在查询后传递参数。

例子:

SELECT  * 
FROM foobar
WHERE foo = ?
AND bar = ?
OR baz = ? ;

寻找类似的东西:

%> {select * from foobar where foo=? and bar=? or baz=? , 'foo','bar','baz' };

最佳答案

您可以使用 -v 选项,例如:

$ psql -v v1=12 -v v2="'Hello World'" -v v3="'2010-11-12'"

然后将SQL中的变量引用为:v1, :v2等:

select * from table_1 where id = :v1;

请注意我们如何使用两个引号传递字符串/日期值 "'...' " 但是这种插值方式容易出现SQL注入(inject),因为是你负责报价。例如。需要包含单引号吗? -v v2="'不要这样做'"

更好/更安全的方法是 let PostgreSQL handle it :

$ psql -c 'create table t (a int, b varchar, c date)'
$ echo "insert into t (a, b, c) values (:'v1', :'v2', :'v3')" \
| psql -v v1=1 -v v2="don't do this" -v v3=2022-01-01

关于PostgreSQL:如何从命令行传递参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7389416/

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