postgres:从带有参数的查询中获取可执行查询
Posted
技术标签:
【中文标题】postgres:从带有参数的查询中获取可执行查询【英文标题】:postgres:get executable query from query with parameters 【发布时间】:2016-07-06 04:43:47 【问题描述】:有没有办法从带有 $ 参数的查询中获取可执行查询。实际上它很奇怪,但我想将可执行查询存储在数据库中。没有参数的完整查询($1,$2,$3)
我正在使用node-postgres
pg.connect(conString, function(err, client, done)
console.log('Executing Insert query');
client.query('insert into tablename(column1,column2,column3) values($1,$2,$3)',["data1","data2","data3"], function(err, result)
done();
console.log('finished executing Insert query');
);
);
这是我需要的
insert into tablename(column1,column2,column3) values("data1","data2","data3")
【问题讨论】:
【参考方案1】:pg-promise 有一个查询格式化引擎,可以独立于查询使用。
const pgp = require('pg-promise')(/* Initialization Options */);
const query = pgp.as.format('INSERT INTO table(column1,column2,column3) VALUES($1,$2,$3)',
["data1", "data2", "data3"]);
console.log(query);
输出:
INSERT INTO table(column1,column2,column3) VALUES('data1','data2','data3')
见format API。
更新
有关使用单个 INSERT
查询的高性能方法,请参阅 Multi-row insert with pg-promise。
【讨论】:
【参考方案2】:您可能希望在 PostgreSQL 中创建一个接受查询名称和参数作为参数的过程,该过程可以准备您传入的查询并使用参数执行。有一个如何在 mysql 中执行此操作的示例,请在下面找到。
How To have Dynamic SQL in MySQL Stored Procedure
http://dev.mysql.com/doc/refman/5.7/en/sql-syntax-prepared-statements.html
【讨论】:
以上是关于postgres:从带有参数的查询中获取可执行查询的主要内容,如果未能解决你的问题,请参考以下文章
带有“%%”参数的 Postgres 查询未通过 psycopg2 返回结果
使用带有 Spring Data 和绑定参数的 Postgres JSONB 查询失败并出现 InvalidDataAccessApiUsageException
获取 PSQLException:错误:在带有 Postgres 的 spark jdbc 中使用查询而不是表名时在“SELECT”处或附近出现语法错误