我有一个大型数据集,我想插入到postgres db中,我可以使用像这样的pg-promise实现这个
function batchUpload (req, res, next) {
var data = req.body.data;
var cs = pgp.helpers.ColumnSet(['firstname', 'lastname', 'email'], { table: 'customer' });
var query = pgp.helpers.insert(data, cs);
db.none(query)
.then(data => {
// success;
})
.catch(error => {
// error;
return next(error);
});
}
数据集是一个像这样的对象数组:
[
{
firstname : 'Lola',
lastname : 'Solo',
email: 'mail@solo.com',
},
{
firstname : 'hello',
lastname : 'world',
email: 'mail@example.com',
},
{
firstname : 'mami',
lastname : 'water',
email: 'mami@example.com',
}
]
挑战是我有一个列added_at
,它不包含在数据集中,不能是null
。如何为查询添加每个记录插入的时间戳。
答案 0 :(得分:0)
根据ColumnConfig语法:
const col = {
name: 'added_at',
def: () => new Date() // default to the current Date/Time
};
const cs = pgp.helpers.ColumnSet(['firstname', 'lastname', 'email', col], { table: 'customer' });
或者,您可以通过许多其他方式对其进行定义,因为ColumnConfig非常灵活。
示例:
const col = {
name: 'added_at',
mod: '^', // use raw-text modifier, to inject the string directly
def: 'NOW()' // use NOW() for the column
};
或者您可以使用属性init
动态设置值:
const col = {
name: 'added_at',
mod: '^', // use raw-text modifier, to inject the string directly
init: () => {
return 'NOW()';
}
};
有关详细信息,请参阅ColumnConfig语法。
P.S。我是pg-promise的作者。