簡體   English   中英

如何在node-postgres中的COPY TO查詢中發送參數

[英]How do I send in parameters in COPY TO-query in node-postgres

我正在執行查詢以將結果導出到ubuntu服務器上運行的postgres中的CSV。

該查詢從Node-API調用,該API通過node-postgres-driver( https://node-postgres.com/ )連接到Postgres。

查詢如下所示:

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) {

            }

COPY是一個實用程序語句,因此不支持參數化執行。

要么將參數注入客戶端,要么(如果您不願意)將參數注入服務器端,並在函數中實現動態SQL。

動態COPY語句中的Use function variable中顯示了一個示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM