mirror of
https://github.com/postgres/postgres.git
synced 2025-07-27 12:41:57 +03:00
Add header matching mode to COPY FROM
COPY FROM supports the HEADER option to silently discard the header line from a CSV or text file. It is possible to load by mistake a file that matches the expected format, for example, if two text columns have been swapped, resulting in garbage in the database. This adds a new option value HEADER MATCH that checks the column names in the header line against the actual column names and errors out if they do not match. Author: Rémi Lapeyre <remi.lapeyre@lenstra.fr> Reviewed-by: Daniel Verite <daniel@manitou-mail.org> Reviewed-by: Peter Eisentraut <peter.eisentraut@enterprisedb.com> Discussion: https://www.postgresql.org/message-id/flat/CAF1-J-0PtCWMeLtswwGV2M70U26n4g33gpe1rcKQqe6wVQDrFA@mail.gmail.com
This commit is contained in:
@ -103,6 +103,15 @@ CREATE FOREIGN TABLE agg_bad (
|
||||
OPTIONS (format 'csv', filename :'filename', header 'true', delimiter ';', quote '@', escape '"', null '');
|
||||
ALTER FOREIGN TABLE agg_bad ADD CHECK (a >= 0);
|
||||
|
||||
-- test header matching
|
||||
\set filename :abs_srcdir '/data/list1.csv'
|
||||
CREATE FOREIGN TABLE header_match ("1" int, foo text) SERVER file_server
|
||||
OPTIONS (format 'csv', filename :'filename', delimiter ',', header 'match');
|
||||
SELECT * FROM header_match;
|
||||
CREATE FOREIGN TABLE header_doesnt_match (a int, foo text) SERVER file_server
|
||||
OPTIONS (format 'csv', filename :'filename', delimiter ',', header 'match');
|
||||
SELECT * FROM header_doesnt_match; -- ERROR
|
||||
|
||||
-- per-column options tests
|
||||
\set filename :abs_srcdir '/data/text.csv'
|
||||
CREATE FOREIGN TABLE text_csv (
|
||||
|
Reference in New Issue
Block a user