使用 map 函数将数组中的值传递给 redshift 参数化查询

Posted

技术标签:

【中文标题】使用 map 函数将数组中的值传递给 redshift 参数化查询【英文标题】:Pass values in an array to redshift parameterized query using map function 【发布时间】:2021-09-22 11:52:16 【问题描述】:

我正在尝试使用参数化查询在 redshift 数据库中插入一个对象数组。我使用了 map 函数并调用了一个事件来遍历数组中的对象。

try 
        responseBody = redshiftClient.parameterizedQuery( 'INSERT INTO tablename (id, test1, test2, test3, test4, test5) VALUES ($1,$2,$3,$4,$5,$6)',  
        [event.map(item => [id, item.test1, item.test2, item.test3,item.test4, test5])]);
     catch ( err ) 
      console.log(err);
     
    var response = 
        "statusCode": 200,
        "headers": 

        ,
        "body": JSON.stringify(responseBody),
        "isBase64Encoded": false
    ;
    console.log('Response'+response);
    return response;

map函数没有遍历数组中的每个对象,返回如下错误。

 "error Message": "error: bind message supplies 1 parameters, but prepared statement \"\" requires 6",

还有其他可用的方法在数组中插入值吗?

【问题讨论】:

【参考方案1】:

可以使用 npm 包pg-format 为参数化查询插入传递多个值。这种格式有助于将参数作为数组传递。 pg-format 提供输出转义 SQL 文字的 %L 模式。

请参考链接https://www.wlaurance.com/2018/09/node-postgres-insert-multiple-rows

【讨论】:

以上是关于使用 map 函数将数组中的值传递给 redshift 参数化查询的主要内容,如果未能解决你的问题,请参考以下文章

高阶函数汇总(mapforEach)

JavaScript Array map() 方法

将指向数组的指针传递给函数时出现分段错误(C++)

有多少种方法可以将 char 数组传递给 C 中的函数?

如何将二维数组传递给用户定义的函数?

将数组传递给函数 - 不同的值 - Segfault