0

我想将多个 csv 文件导入 Exasol db。实际上它是一个巨大的文件,我已经对其进行了分块以极大地提高导入性能。Exasol 支持多个文件的并行导入:

IMPORT INTO target_table
FROM CSV AT 'https://someurl'
FILE 'file1.csv'
FILE 'file2.csv'
...
;

问题是,我想忽略导入错误并以某种方式记录它们。我很想使用 Exasol 支持的错误表,但不幸的是,在单个语句中不能用于多个文件

IMPORT INTO target_table
FROM CSV AT 'https://someurl'
FILE 'file1.csv'
FILE 'file2.csv'
...
REJECT LIMIT 100 --ignore 99 errors, this does completes the import, but nothing is logged
ERRORS INTO IMPORT_ERROR_TABLE --does not work for mutiple file import statement
;

我不能分块我的 csv 文件,一切都会正常工作,但我宁愿不这样做,因为性能。;-)

关于做什么的任何建议?在一次导入多个文件期间如何检查错误?我愿意接受建议。

4

1 回答 1

0

您可以尝试将错误发送到 FILE 而不是 TABLE。此选项可能适用于多个文件。

或者,还有很长的路要走。您可以创建一个 UDF 脚本并使用它来并行读取和解析所有文件。对于 Java,您可以使用 Univocity CSV 解析器。您将能够微调日志记录和转换,并拥有令人难以置信的整体灵活性。但它需要编码。

如果 UDF 脚本是可接受的选项,我可以与您分享一些代码。

于 2019-05-06T15:08:54.263 回答