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:
@ -36,7 +36,7 @@ COPY { <replaceable class="parameter">table_name</replaceable> [ ( <replaceable
|
||||
FREEZE [ <replaceable class="parameter">boolean</replaceable> ]
|
||||
DELIMITER '<replaceable class="parameter">delimiter_character</replaceable>'
|
||||
NULL '<replaceable class="parameter">null_string</replaceable>'
|
||||
HEADER [ <replaceable class="parameter">boolean</replaceable> ]
|
||||
HEADER [ <replaceable class="parameter">boolean</replaceable> | <literal>match</literal> ]
|
||||
QUOTE '<replaceable class="parameter">quote_character</replaceable>'
|
||||
ESCAPE '<replaceable class="parameter">escape_character</replaceable>'
|
||||
FORCE_QUOTE { ( <replaceable class="parameter">column_name</replaceable> [, ...] ) | * }
|
||||
@ -276,7 +276,11 @@ COPY { <replaceable class="parameter">table_name</replaceable> [ ( <replaceable
|
||||
<para>
|
||||
Specifies that the file contains a header line with the names of each
|
||||
column in the file. On output, the first line contains the column
|
||||
names from the table, and on input, the first line is ignored.
|
||||
names from the table. On input, the first line is discarded when this
|
||||
option is set to <literal>true</literal> (or equivalent Boolean value).
|
||||
If this option is set to <literal>match</literal>, the number and names
|
||||
of the columns in the header line must match the actual column names of
|
||||
the table, otherwise an error is raised.
|
||||
This option is not allowed when using <literal>binary</literal> format.
|
||||
</para>
|
||||
</listitem>
|
||||
|
Reference in New Issue
Block a user