Как распознать имена полей в строке заголовка файла 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