我正在将 50 个 CSV 数据文件导入 postgres。我有一个整数字段,有时该值是常规数字(以逗号分隔),有时它在引号中并使用逗号表示千位。
例如,我需要同时导入 4 和“4,000”。
我正在努力:
COPY race_blocks FROM '/census/race-data/al.csv' DELIMITER ',' CSV HEADER;
并得到错误:
错误:整数的无效输入语法:“1,133”
我怎样才能做到这一点?
我正在将 50 个 CSV 数据文件导入 postgres。我有一个整数字段,有时该值是常规数字(以逗号分隔),有时它在引号中并使用逗号表示千位。
例如,我需要同时导入 4 和“4,000”。
我正在努力:
COPY race_blocks FROM '/census/race-data/al.csv' DELIMITER ',' CSV HEADER;
并得到错误:
错误:整数的无效输入语法:“1,133”
我怎样才能做到这一点?
假设您的数据中只有一列。首先使用 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;