我有一个输入 CSV 文件,其中包含以下内容:
SD-32MM-1001,"100.00",4/11/2012
SD-32MM-1001,"1,000.00",4/12/2012
我试图将其复制导入到 postgresql 表(varchar,float8,date)中并遇到错误:
# copy foo from '/tmp/foo.csv' with header csv;
ERROR: invalid input syntax for type double precision: "1,000.00"
Time: 1.251 ms
除了预处理输入文件之外,PG 中是否有一些设置可以让它读取像上面这样的文件并在 COPY 中转换为数字形式?除了复制之外还有什么?
如果需要预处理,是否可以将其设置为 COPY 命令的一部分? (不是psql\copy
)?
非常感谢。
最佳答案
预处理的选项是首先将其作为文本复制到临时表中。使用 to_number 函数从那里插入最终表:
select to_number('1,000.00', 'FM000,009.99')::double precision;
关于postgresql如何让COPY自动解释格式化的数字字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16110175/