如何在Vertica的COPY命令中去除CSV字段值的双引号?
如何在Vertica导入CSV时去除字符串字段的双引号?
我通过ClickHouse的S3表引擎将数据存储为S3上的CSV文件,再用Vertica的COPY命令导入到自有表中。
ClickHouse侧的S3表DDL:
CREATE TABLE db.table on cluster 'cluster_name' ( `id` String, `articles` UInt64, `app_days` UInt64, `search_count` UInt64, `city` String ) ENGINE=S3('https://123.123.com/file.csv', 'key', 'secret_key', 'CSV')
在ClickHouse中查询时,id和city字段值没有双引号,但用Vertica的COPY命令导入后,这些字段值会带上双引号(比如"111"或"NY")。
我使用的Vertica COPY命令:
COPY db.table2(id, articles, app_day, search_count, city) FROM 's3://file.csv' REJECTED DATA AS TABLE db.table2_rejected DELIMITER ','
解决方案
在Vertica的COPY命令中添加ENCLOSED BY '"'参数,指定双引号作为字段的包围符号,导入时会自动剔除字段首尾的双引号。修改后的命令如下:
COPY db.table2(id, articles, app_day, search_count, city) FROM 's3://file.csv' REJECTED DATA AS TABLE db.table2_rejected DELIMITER ',' ENCLOSED BY '"'
补充说明
ENCLOSED BY参数会匹配字段首尾的指定字符(此处为双引号),并在导入过程中移除它们,兼容带引号和不带引号的字段场景。- 如果CSV中存在包含分隔符(逗号)的字符串字段,该参数还能正确识别带引号的完整字段,避免分隔符导致的字段错位问题。
内容的提问来源于stack exchange,提问作者Alexandr
相关产品推荐
相关产品推荐

