Postgres Copy - 使用逗号导入整数

时间:2013-09-09 21:34:27

标签: sql postgresql csv

我正在将50个CSV数据文件导入postgres。我有一个整数字段,有时值是常规数字(逗号分隔),有时它在引号中,并使用逗号为数千。

例如,我需要导入4和“4,000”。

我正在尝试:

COPY race_blocks FROM '/census/race-data/al.csv' DELIMITER ',' CSV HEADER;

得到错误:

  

错误:整数的输入语法无效:“1,133”

我该怎么做?

1 个答案:

答案 0 :(得分:3)

假设您的数据中只有一列。 首先使用varchar列创建临时表:

CREATE TEMP TABLE race_blocks_temp (your_integer_field VARCHAR);

从文件中复制数据

COPY race_blocks_tmp FROM '/census/race-data/al.csv' DELIMITER ',' CSV HEADER;

从varchar字段中删除',',将数据转换为数字并插入到表中。

INSERT INTO race_blocks regexp_replace(your_integer_field, ',', '') :: numeric AS some_colun FROM race_blocks_tmp;