在SQL加载程序中跳过输入文件中的多列
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在SQL加载程序中跳过输入文件中的多列相关的知识,希望对你有一定的参考价值。
输入文件
SegNo|empId|col3|col4|col5..|col9|flightNum|status
1|10|aa|bb|cc|ee|dd|123|active
2|11|ta||cc||sd|205|active
3|12|ay|bb|oc|me|hd|123|inactive
4|10||||ee|dd|123|active
如何编写控制文件以仅将列“ SegNo,empId,flightNum,状态”映射到DB。我无法使用位置,因为很少有记录在某些列中具有空数据(此处记录2和4在column3中具有空数据,等等)。
答案
将文件中的那些字段定义为FILLER。假设您的名为FLIGHT_DATA的表包含SegNo,empId,flightNum和status列:LOAD DATA
APPEND
INTO TABLE FLIGHT_DATA
FIELDS TERMINATED BY '|'
TRAILING NULLCOLS
(
SegNo DECIMAL EXTERNAL
,empId DECIMAL EXTERNAL
,col3 FILLER
,col4 FILLER
,col5 FILLER
,col6 FILLER
,col7 FILLER
,col8 FILLER
,col9 FILLER
,flightNum DECIMAL EXTERNAL
,status CHAR(50)
)
注意,可以将FILLER字段命名为任意名称,只要它们是唯一的并且与表中的列名不匹配即可。必须考虑文件中的字段,但是只要它们的名称不匹配且它们被定义为FILLER,就不会加载它们。
以上是关于在SQL加载程序中跳过输入文件中的多列的主要内容,如果未能解决你的问题,请参考以下文章
在 spark 中跳过 hive 表中丢失的文件以避免 FileNotFoundException