COPY .. FROM LOCAL在控制台上不输出错误。 例如:
create table test (col1 INT);
并且我有文件(abc.data)包含要插入表测试的数据,如下所示
1237232632624232
111
222
我使用以下命令将数据插入表中
COPY test from local 'abc.data';
我希望它在控制台上输出错误(溢出)。但是,事实并非如此。我通过使用EXCEPTIONS将错误输出到文件来解决。
您如何知道在控制台上输出错误的方式?预先感谢。
答案 0 :(得分:2)
默认情况下,Vertica不会在每个坏行上使COPY
命令失败。相反,它将错误和不良行写入位于Vertica目录路径下名为CopyErrorLogs
的目录中的文件中。
您可以使用EXCEPTIONS
和REJECTED DATA
选项为这些错误文件选择其他位置(就像您一样)。
或者,为方便起见,将错误和不良数据写入表:
COPY test from local 'abc.data' REJECTED DATA as TABLE test_rejected;
然后,您可以使用sql分析test_rejected
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))
答案 1 :(得分:0)
如果您希望在拒绝行时复制命令失败并显示错误消息,则可以使用REJECTMAX 1
(尽管它不是特定的)。
然后,您可以使用异常和拒绝的数据文件或拒绝的数据表进一步进行调查。
有关文档中有关加载错误的更多信息: https://www.vertica.com/docs/9.2.x/HTML/Content/Authoring/AdministratorsGuide/BulkLoadCOPY/CapturingLoadExceptionsAndRejections.htm
答案 2 :(得分:-1)
尝试一下:
load data infile 'abc.data' into table test fields terminated by ',';