在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加载程序中跳过输入文件中的多列的主要内容,如果未能解决你的问题,请参考以下文章

如何从sql中跳过一行?

如何在 C++ 中跳过空格

在 spark 中跳过 hive 表中丢失的文件以避免 FileNotFoundException

在 MS Access 中跳过 CSV 文件的前三行(使用 DoCmd?)

如果不与其他表共享 ID,如何从 SQL 中跳过值

在jquery中跳过循环中的数字