我需要将文件导入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文件类型导入数据?
答案 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过度,您可以将数据加载到临时表,然后从那里检查,然后转换/修剪/操作您认为应该有效的任何数据。