当源为gzip

时间:2016-04-19 14:30:49

标签: csv gzip vertica vsql

我正在尝试使用vsql CLI将文件上传到vertica。我的命令看起来像这样(它只是一行,但为了便于阅读,我在这里用反斜杠打破它):

vsql "-c set timezone to 'UTC';     \   
    copy etl.test_data1 (col1,col2,col3)\
    from local 'test_data1.csv.gz' \
    gzip delimiter E'\\t'       \
    exceptions '/home/error/etl.test_data1.err' \
    NULL AS 'NULL'        \
    NO ESCAPE    \
    rejected data '/home/rejected/etl.test_data1.rejected'" \
    -p5433 -hverticahostname -Uusername -ddatabase -vON_ERROR_STOP=ON

当我运行该命令时,它执行时没有错误,但没有加载任何行,数据直接进入被拒绝的文件。

当我在同一文件的非压缩版本上运行此csv-load命令时,它会将数据加载到表中而不会被拒绝:

vsql "-c set timezone to 'UTC';     \   
    copy etl.test_data1 (col1,col2,col3)\
    from local 'test_data1.csv' \
    delimiter ','       \
    exceptions '/home/error/etl.test_data1.err' \
    NULL AS 'NULL'        \
    NO ESCAPE    \
    rejected data '/home/rejected/etl.test_data1.rejected'" \
    -p5433 -hverticahostname -Uusername -ddatabase -vON_ERROR_STOP=ON

我尝试运行该命令时没有明确的分隔符设置,结果相同。我尝试使用UNIX gzip命令制作gzip,并使用python gzip模块对其进行编码,并得到相同的结果(以防文件以某种方式损坏)。

我最终希望通过作业上传的文件很大,而csv不是定期上传的高性能选项。有关为什么gzip加载失败的任何建议吗?

编辑:评论中的解决方案;在csv上执行gzip不会更改分隔符 - 仍然需要使用','作为分隔符,而不是制表符!

0 个答案:

没有答案