我有一个csv文件,其数据类似“ 44444 521 hello”。 这里的景象是“ Tabulations”。
我想在名为“ TEST1”的表中导入csv数据,所以我这样做了:
\copy TEST(attribut1,attribut2,attribut3) FROM '/mnt/c/Users/user1/Desktop/data/test1.csv' WITH DELIMITER E'\t' CSV HEADER;
attribut1 =整数。 attribut2 =整数。 attribut3 = varchar(20)。
它说:
错误:整数的无效输入语法:“ 44444 521 hello” 上下文:COPY test1,第2行,列属性1:“ 4444444 521 你好“
感谢您的时间。
编辑:
答案 0 :(得分:0)
问题之所以出现,是因为您要指定CSV,从而激活postgres的csv导入规则。您的文件不会被制表符分隔;它在每行的开头和结尾都有"
引号,在CSV模式下表示“数据的开始” /“数据的结束”,因此每行都被视为一个字段,其中的制表符被视为数据,而不是定界符
要么以文本模式导入(不指定CSV),要么以CSV模式导入,但指定另一个引号char(文件中不存在的char,1)以停止"
被视为引号和2),因此不能将其他字符视为引号)
在任何一种情况下,您都必须删除引号"
字符,以免后期处理-我认为您无法在复制数据时即时处理数据,因此必须将其加载到首先是一个临时表(所有varchar),然后除去引号并将其加载到实际表(REPLACE(data, '"', '')::int
)
或者,您可以文本编辑文件,然后从文件中删除"
字符,然后再将其提供给Postgres