问题描述
|
我需要将文件导入到我的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文件类型中导入数据?
解决方法
http://wiki.postgresql.org/wiki/COPY
不能扩展Pg强制
数据加载机制依赖于数据是Pg数据类型的形式表示,或由Pg强制(例如可强制转换)的形式表示。但是,目前尚没有一种为Pg类型添加自定义强制的方法。例如,您不能通过将强制重写为Int来使\ '31,337 \':: int起作用。
它还提出了两种选择,即pgloader。
与内置COPY相比,pgloader以更灵活的格式更好地加载容易出错的数据。与内置的COPY相比,缺点是安装复杂度更高(Python + psycopg +配置),并且有时会造成明显的速度损失。
, 根据Denis对COPY命令的答复,您不能在postgres复制命令中添加自定义强制。如果pgloader过大,则可以将数据加载到临时表中,然后从那里检查,然后强制转换/修剪/操作您认为应该有效的任何数据。