Redshift卸载至S3能否使用多字符分隔符?异常问题求助
Redshift UNLOAD不支持多字符分隔符的解决方案
Redshift的UNLOAD命令不支持多字符分隔符,DELIMITER参数仅接受单个字符。所以你指定'||'或其他多字符值时,系统只会提取第一个字符作为分隔符,这就是你遇到问题的原因。
以下是几种可行的替代方案:
- 使用数据中不存在的唯一单字符分隔符
选择一个你的业务数据里绝对不会出现的字符(比如^、¦等)作为分隔符,示例命令:unload ('select * from venue') to 's3://mybucket/unload/' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' CSV DELIMITER AS '^'; - 导出为JSON格式
如果业务允许,直接导出为JSON格式可以完全避免分隔符冲突问题,示例命令:unload ('select * from venue') to 's3://mybucket/unload/' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' FORMAT AS JSON 'auto'; - 后续批量替换分隔符
如果必须使用多字符分隔符,可以先以单字符分隔符导出CSV文件,再通过AWS Glue、Lambda函数或S3批量操作工具,批量将文件中的单字符替换为目标多字符分隔符。
内容的提问来源于stack exchange,提问作者pan325
相关产品推荐
相关产品推荐

