Redshift数据加载问题:含分隔符列处理及选择性加载列
Redshift COPY命令处理含分隔符列及指定列加载方案
1. 加载包含分隔符值的列
如果C列的竖线是用引号包裹的(比如数据格式为A值|B值|"C值|带竖线"),可以在COPY命令中添加quoted by参数,让Redshift识别引号内的内容为单个字段:
copy load_table from 'S3_location' iam_role '你的IAM角色ARN' delimiter '|' quoted by '"';
如果C列的竖线是用转义字符(比如\)转义的(比如数据格式为A值|B值|C值\|带竖线),则使用escape参数:
copy load_table from 'S3_location' iam_role '你的IAM角色ARN' delimiter '|' escape '\';
如果数据既没有引号也没有转义,需要先预处理数据(比如用AWS Lambda给含竖线的C列添加引号,或替换内部竖线为其他字符),再执行COPY命令。
2. 仅加载A、B列
可以直接在COPY命令中指定要加载的列列表,忽略C列:
copy load_table (A, B) from 'S3_location' iam_role '你的IAM角色ARN' delimiter '|';
这样Redshift只会读取每行的前两个竖线分隔的字段,直接存入A、B列,完全不受C列内容的影响。
内容的提问来源于stack exchange,提问作者Shubham Sundram
相关产品推荐
相关产品推荐

