csv
我想在一个postgreSQL
表中导入相当数量的文件。这些csv
文件包含的字段数量不同,但标题行包含的字段fieldnames
与目标表中的字段相对应。
而不是使用以下方法指定每个csv
文件中存在的字段:
COPY destination_table (comma_separated_fields_in_source_file) FROM '/filepath'...
我想知道是否有办法postgres / pgAdmin
识别标题行中的字段名?
谢谢。
csv
我想在一个postgreSQL
表中导入相当数量的文件。这些csv
文件包含的字段数量不同,但标题行包含的字段fieldnames
与目标表中的字段相对应。
而不是使用以下方法指定每个csv
文件中存在的字段:
COPY destination_table (comma_separated_fields_in_source_file) FROM '/filepath'...
我想知道是否有办法postgres / pgAdmin
识别标题行中的字段名?
谢谢。
这很顽皮,未经测试,但可能有效:
bash -c 'echo copy tablename \(; head -1 filename; echo \) from stdin with format csv header\;; cat filename ' | psql
COPY 本身不支持此功能,但是您可能会考虑编写一个函数/存储过程来处理此问题。也许使用“Foreign Data Wrapper”读取第一行并从中动态创建“COPY”SQL 语句。有关 text/csv 外国数据包装器的信息,请参见此处:http ://www.postgresql.org/docs/current/static/file-fdw.html