【发布时间】:2020-02-28 19:57:40
【问题描述】:
我有一系列 CSV 文件,格式为:
"Alice","Bob","A",123.46,"4"
"Charlie","Dana","B",987.6543,"9"
...
我想制作一个这样的表格:
id file_id mch c1 c2 c3 c4 c5
--- ------- ----- --------- ------ --- -------- ---
1 462 FALSE 'Alice' 'Bob' 'A' 123.46 '4'
2 462 FALSE 'Charlie' 'Dana' 'B' 987.6543 '9'
... 462 FALSE ... ... ... ... ...
... ... ... ... ... ... ... ...
在哪里
-
id是主键,是任意的,应该按照插入的顺序自动生成。它是这样指定的。 -
file_id是我要插入到此表中的每个文件的常量,但在文件之间有所不同。在我尝试批量添加文件之前就知道了。 -
mch在插入时始终为假 -
c1到c5是通用列标题,类型是预先知道的。
目前我正在使用以下 SQL 命令批量插入我的每个 CSV 文件:
COPY pos(c1,c2,c3,c4,c5)
FROM 'C:/Users/.../filename.csv'
WITH (FORMAT CSV, HEADER FALSE, ENCODING 'UTF8')
用于填充主键 ID。这将生成一个没有列file_id 或mch 的表。
但我不知道如何正确填充同一语句中的其他两列(file_id 和 mch),而不执行其他完整的 UPDATE 语句。
【问题讨论】:
-
请记住始终提供您的表定义和 Postgres 版本。
标签: sql postgresql csv postgresql-copy