【问题标题】:How do I send in parameters in COPY TO-query in node-postgres如何在 node-postgres 中的 COPY TO 查询中发送参数
【发布时间】:2018-08-09 10:17:30
【问题描述】:

我正在查询以在 ubuntu-server 上运行的 postgres 中将结果导出为 CSV。

查询是从通过 node-postgres-driver(https://node-postgres.com/) 连接到 Postgres 的 Node-API 调用的。

查询如下所示:

var sqlText = 
   'Copy (SELECT company.name AS Company, SUM(sale.numbersold) AS NumberSold 
    FROM SALE LEFT JOIN company ON company.companyid = sale.companyid 
    WHERE sale.createdate BETWEEN $1 AND $2 GROUP BY company.name) 
    To \'/tmp/test.csv\' With CSV HEADER DELIMITER \',\'';

每当我尝试将此查询与参数一起使用时,我都会得到一个异常,即 postgres 期望 0 个参数并得到 2 个。如何将参数发送到这样的查询?

如果我使用这样的静态文本进行查询,它会起作用:

var sqlText = 'Copy (SELECT company.name AS Company, SUM(sale.numbersold) AS NumberSold 
FROM SALE LEFT JOIN company ON company.companyid = sale.companyid 
WHERE sale.createdate BETWEEN \'2018-01-01\' AND \'2018-01-01\' 
GROUP BY company.name) 
To \'/tmp/test.csv\' With CSV HEADER DELIMITER \',\'';

节点中的代码:

var params = ['2018-01-01', '2018-01-28']

 let dbResult;
            try {
                    dbResult = await GetStuff(sqlText, params);
            } catch (err) {

            }

【问题讨论】:

    标签: sql node.js postgresql node-postgres


    【解决方案1】:

    COPY 是一个实用程序语句,因此不支持参数化执行。

    参数应该在客户端注入,或者,如果您不喜欢,可以在服务器端注入在函数中实现的动态 SQL。

    Use function variable in dynamic COPY statement 中显示了一个示例。

    【讨论】:

    • 好吧,我担心是这样。我会尝试在客户端注入它。谢谢你的回答!
    猜你喜欢
    • 2012-06-04
    • 2015-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多