在postgres数字类型上导入csv文件

时间:2011-06-11 17:14:38

标签: postgresql csv import

我需要将文件导入Postgres数据库并收到此错误:

  

fabrica中整数的输入语法无效,“1”;
  SQL状态:22P02

我的命令是:

copy trazabilidade(fabrica, --integer
                    idChapa, --integer
                    descricao, --varchar
                    espessura, --double precision
                    comprimento, --double precision
                    largura, --double precision
                    peso) from 'C:/temp_nexo/traz.csv' delimiter ';';

如何从具有数字的csv文件类型导入数据?

2 个答案:

答案 0 :(得分:1)

http://wiki.postgresql.org/wiki/COPY

  

不能延长Pg强制

     

数据加载机制依赖于数据是Pg数据类型的正式表示,或Pg的可强制(例如,可铸造)。但是,目前没有办法为Pg类型添加自定义强制。例如,你不能通过将强制转换为Int来使'31,337':: int工作。

它还提出了两种选择,即pgloader

  

pgloader在以比内置COPY更灵活的格式加载容易出错的数据方面要好得多。缺点是额外的安装复杂性(Python + psycopg +配置)以及与内置COPY相比有时显着的速度损失。

答案 1 :(得分:1)

根据Denis关于COPY命令的回复,您无法向postgres复制命令添加自定义强制。如果pgloader过度,您可以将数据加载到临时表,然后从那里检查,然后转换/修剪/操作您认为应该有效的任何数据。