在SQL加载程序中跳过输入文件中的多列

问题描述 投票:0回答:1

输入文件

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中具有空数据,等等)。

sql-loader
1个回答
0
投票
将文件中的那些字段定义为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,就不会加载它们。 
© www.soinside.com 2019 - 2024. All rights reserved.