Как распознать имена полей в строке заголовка файла text/csv при импорте в таблицу postgreSQL?

Я хочу импортировать изрядное количество csv файлы в одном postgreSQL Таблица. csv файлы различаются по количеству полей, которые они содержат, но строка заголовка содержит fieldnames которые соответствуют тем в таблице назначения.

Вместо того, чтобы указывать поля, присутствующие в каждом csv использование файла:

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

Мне было интересно, есть ли способ иметь postgres / pgAdmin распознать имена полей в строке заголовка?

Благодарю.

2 ответа

Это непослушно и не проверено, но может сработать:

bash -c 'echo copy tablename \(; head -1 filename; echo \) from stdin with format csv header\;; cat filename ' | psql

COPY не поддерживает это изначально, однако вы можете подумать о написании функции / хранимой процедуры, чтобы справиться с этим. Может быть, с помощью 'Foreign Data Wrapper', чтобы прочитать первую строку и динамически создать из этого SQL-оператор COPY. Смотрите здесь текст /csv Оболочка иностранных данных: http://www.postgresql.org/docs/current/static/file-fdw.html

Другие вопросы по тегам