使用Vertica COPY命令加载列数不匹配的数据的解决方案
解决COPY命令中文件列数与目标表列数不匹配的数据加载问题
文件列数少于目标表列数的解决方案
之前用FILLER报错是因为FILLER列名和目标表列名重名,导致数据库无法区分。正确做法是给FILLER列取独立别名,再显式指定目标列使用默认值或常量:
COPY COPY_TEST(TC1, TC2, dummy3 FILLER VARCHAR(255), dummy4 FILLER VARCHAR(255), TC3 = DEFAULT, TC4 = DEFAULT) FROM LOCAL 'COPYTEST_LESS_COL' DELIMITER '|' ENCLOSED BY '"' AUTO;
dummy3、dummy4是临时FILLER列名,避免和表中TC3、TC4重名TC3 = DEFAULT表示使用表定义的默认值,也可替换为具体常量(比如TC3 = 'N/A')
文件列数多于目标表列数的解决方案
用FILLER列接收文件中多余的列即可,同样要给FILLER列取独特别名:
COPY COPY_TEST(TC1, TC2, TC3, TC4, dummy5 FILLER VARCHAR(255), dummy6 FILLER VARCHAR(255), dummy7 FILLER VARCHAR(255)) FROM LOCAL 'COPYTEST_More_COL' DELIMITER '|' ENCLOSED BY '"' AUTO;
这里dummy5到dummy7对应文件中多余的FC5到FC7,COPY命令会忽略这些FILLER列的数据,只将前4列映射到目标表的对应字段。
内容的提问来源于stack exchange,提问作者Phantom
相关产品推荐
相关产品推荐

