如何使用pg-promise将JSON数据插入PostgreSQL表并映射字段
使用pg-promise将JSON数据插入PostgreSQL表
下面给出两种常用的实现方式,假设你已经安装了pg-promise包,且数据库中存在名为your_table、包含id(整数类型)和name(字符串类型)字段的表。
方法1:显式参数化插入
适合字段较少的场景,直接指定字段和对应的值:
首先初始化数据库连接:
const pgp = require('pg-promise')(); // 替换为你的数据库连接信息 const db = pgp('postgres://username:password@localhost:5432/your_db');
定义要插入的JSON数据并执行插入:
const inputData = { id: 1, name: 'abc' }; // 执行插入操作 db.none('INSERT INTO your_table(id, name) VALUES($1, $2)', [inputData.id, inputData.name]) .then(() => console.log('数据插入成功')) .catch(err => console.error('插入失败:', err));
方法2:使用helpers自动生成插入语句
适合字段较多的场景,无需手动拼接字段和参数:
const pgp = require('pg-promise')(); const db = pgp('postgres://username:password@localhost:5432/your_db'); const inputData = { id: 1, name: 'abc' }; // 定义列集合,指定要插入的字段和目标表 const columnSet = new pgp.helpers.ColumnSet(['id', 'name'], { table: 'your_table' }); // 自动生成INSERT语句 const insertQuery = pgp.helpers.insert(inputData, columnSet); // 执行查询 db.none(insertQuery) .then(() => console.log('数据插入成功')) .catch(err => console.error('插入失败:', err));
注意事项
- 确保JSON对象的键名和表字段名完全匹配,否则会出现字段不匹配的错误
- 使用
db.none()执行无返回结果的操作,如果需要获取插入后的行数据,可以改用db.one()(确保插入一行)或db.oneOrNone() - 参数化查询(两种方法都是)能有效防止SQL注入,不要直接将JSON数据拼接进SQL字符串中
内容的提问来源于stack exchange,提问作者Aadarsh Unni Wilson
相关产品推荐
相关产品推荐

