По умолчанию Vertica не выполняет команду COPY
в каждой плохой строке.Вместо этого Он записывает ошибки и неправильные строки в файлы в каталоге с именем CopyErrorLogs
, расположенном в каталоге Vertica.
Вы можете выбрать другое расположение для этих файлов ошибок, используя опции EXCEPTIONS
и REJECTED DATA
(как вы сделали).
Или, что может быть более удобным, записывать ошибки и неверные данныев таблицу:
COPY test from local 'abc.data' REJECTED DATA as TABLE test_rejected;
Затем вы можете проанализировать test_rejected
с помощью sql
dbadmin=> \x
Expanded display is on.
dbadmin=> select * from test_rejected limit 1;
-[ RECORD 1 ]---+------------------------------------------------------------------
file_name | abc.data
row_number | 1
rejected_data | 1237232632624232123243214
rejected_reason | int8 out of range '1237232632624232123243214' for column 1 (col1)
Если вы хотите выполнить команду COPY
при каждой неудачеиспользование строки ABORT ON ERROR
.например:
dbadmin=> COPY test from local 'abc.data' ABORT ON ERROR;
ERROR 2035: COPY: Input record 1 has been rejected (int8 out of range '1237232632624232123243214' for column 1 (col1))