首页 > 解决方案 > 如何在 PostgreSQL 中执行 COPY TO 而不重新排序 CSV 文件

问题描述

我有一个包含两列的 CSV 文件,一列已填充(邮政编码),一列为空(速率)。我有一个 postgreSQL 表,其中包含一个重复的 zipcode 列和一个 rate 列,其中一半填充了值,一半为空。

(file.csv)
zipcode,rate
11111,
22222,
55555,
33333,
44444,

(table)
id| zipcode| rate
----------------
1 | 11111  | 33.53
2 | 22222  | null
3 | 55555  | 31.20
4 | 33333  | 44.35
5 | 44444  | null

我的问题是,当我尝试将填充的费率单元格合并到 CSV 文件中时,

=# COPY (SELECT zipcode, rate FROM table) TO '/Users/User/path/file.csv' DELIMITER ',' CSV HEADER;

postgres 重新排序 CSV 文件的单元格,并将包含空值的行放在带有 rate 值的单元格上方,如下所示 -

(file.csv)
zipcode,rate
22222,
44444,
11111,33.53
55555,31.20
33333,44.35

在我的情况下,rate 的空白单元格是可取的,我只需要一种方法来保留原始 .csv 文件的行顺序。

=# COPY table (zipcode, rate) TO '/Users/User/path/file.csv' DELIMITER ',' CSV HEADER;

得到相同的结果。想知道那里的 ORDER BY id 是否可行,但还没有成功。使用 psql 10.3。

标签: sqldatabasepostgresqlcsvcopy

解决方案


推荐阅读