使用pgp.helpers.insert时有何变换数据类型的方法?

时间:2018-01-28 17:17:10

标签: postgresql pg-promise

在这里乞求新手宽恕

我已经得到了很多POC的工作但现在我正在处理我的生产数据集我正在解析的CSV文件将ID字段作为字符串但在Postgres中它是一个整数。

我得到的基本错误是: Unhandled promise rejection (rejection id: 1): error: invalid input syntax for integer: "contact_id"

并且Insert语句如下所示:

insert into "tbl_contact"("contact_id","last_name","first_name") values('contact_id','last_name','first_name'),('33383971','Dxxx','Jxxx'),('33383973','Dxxx','Sxxx') ...

我可以在将数组发送给帮助程序之前对其进行转换...但我一直在查看ColumnSet中的一些覆盖函数...就像将列设置为int [] ...这是在那里发生的事情:

Unhandled promise rejection (rejection id: 1): error: malformed array literal: "contact_id"

insert into "tbl_contact"("contact_id","last_name","first_name") values('contact_id'::int[],'last_name','first_name'),('33383971'::int[],'Dxxx','Jxxx'),('33383973'::int[],'Dxxx','Sxxxx') ...

在我去做自己的改造之前......我错过了一些简单的事情吗?另一个帮手?一个参数?等

2 个答案:

答案 0 :(得分:0)

Column语法支持属性cast等,您可以设置:

{
    name: 'contact_id',
    cast: 'int[]'
}

或者,如果要在运行中将字符串转换为整数,可以使用属性init

{
    name: 'column-name',
    init: c => parseInt(c.value)
}

答案 1 :(得分:0)

所以真正的答案就是维塔利在他的评论中所说的......我的CSV中有一行我在INSERT中包含了...但他的专栏答案也对那些需要它的人有用!

Yay Vitaly!