1

csv我想在一个postgreSQL表中导入相当数量的文件。这些csv文件包含的字段数量不同,但标题行包含的字段fieldnames与目标表中的字段相对应。

而不是使用以下方法指定每个csv文件中存在的字段:

COPY destination_table (comma_separated_fields_in_source_file) FROM '/filepath'...

我想知道是否有办法postgres / pgAdmin识别标题行中的字段名?

谢谢。

4

2 回答 2

1

这很顽皮,未经测试,但可能有效:

bash -c 'echo copy tablename \(; head -1 filename; echo \) from stdin with format csv header\;; cat filename ' | psql
于 2013-02-16T16:23:19.470 回答
0

COPY 本身不支持此功能,但是您可能会考虑编写一个函数/存储过程来处理此问题。也许使用“Foreign Data Wrapper”读取第一行并从中动态创建“COPY”SQL 语句。有关 text/csv 外国数据包装器的信息,请参见此处:http ://www.postgresql.org/docs/current/static/file-fdw.html

于 2013-02-16T15:01:00.767 回答