如何将数组中的值传入Redshift参数化查询
Redshift参数化查询正确传值方式
你的问题出在参数传递的类型错误:当前params是字段名组成的字符串,但Redshift的参数化查询要求第二个参数是对应占位符的实际值数组,数组元素顺序必须和SQL中的$1、$2...$6完全匹配。
修正后的代码示例
// 定义包含实际插入值的数组,顺序对应id、test1到test5 const paramsArray = [1001, 'test_val_1', 'test_val_2', 'test_val_3', 'test_val_4', 'test_val_5']; let query = 'INSERT INTO tablename (id, test1, test2, test3, test4, test5) VALUES ($1,$2,$3,$4,$5,$6)'; client.parameterizedQuery(query, paramsArray, function (err, result) { if (err) reject(err); else { resolve('INSERTED Batch'); } });
关键注意事项
- 参数数组的长度必须和SQL中占位符的数量一致,顺序严格对应
- 如果你需要批量插入多条数据,可以扩展SQL和参数数组:
// 插入2条数据的示例 const batchParams = [ 1001, 'val1', 'val2', 'val3', 'val4', 'val5', 1002, 'val6', 'val7', 'val8', 'val9', 'val10' ]; let batchQuery = 'INSERT INTO tablename (id, test1, test2, test3, test4, test5) VALUES ($1,$2,$3,$4,$5,$6), ($7,$8,$9,$10,$11,$12)'; client.parameterizedQuery(batchQuery, batchParams, function (err, result) { // 处理逻辑 });
内容的提问来源于stack exchange,提问作者Yugesh Eathalapaka
相关产品推荐
相关产品推荐

