mysql - COPY ... FROM LOCAL 不会在控制台上输出错误
问题描述
COPY .. FROM LOCAL
不会在控制台上输出错误。例如:
create table test (col1 INT);
我有一个文件(abc.data
),其中包含要插入到表中的数据,test
如下所示
1237232632624232
111
222
我使用以下命令将数据插入表中
COPY test from local 'abc.data';
我希望它在控制台上输出错误(溢出)。但是,事实并非如此。我通过使用EXCEPTIONS
将错误输出到文件来解决。
你怎么知道在控制台上输出错误的方式?提前致谢。
解决方案
默认情况下,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))
推荐阅读
- json - var json = [:] 空字典
- elixir - 为整个协会构建变更集
- android - RxJava 运算符或 Kotlin 链
- windows - 如何删除文件名中包含特定字符串的文件夹和所有子文件夹中的文件?
- linux - 将 Internet 访问脚本列入白名单
- ip-address - Hololens 如何确定其 IP 地址?
- ios - iPhone控制面板应用程序中的蓝牙开/关状态
- android - Crashlyitics 未出现在 Firebase 中
- html - 使用Bulma在中间制作一个div填充剩余空间并滚动
- java - 如何从多线程 log4j2 缓冲区中读取