暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle SQL * Loader控制文件中子句的用途

askTom 2017-03-15
421

问题描述

嗨,

我正在学习数据加载与Sql Loader。我写了一些基本的控制文件 (没有使用子句) 然后数据加载良好。但是我不理解NULLIF,CHAR,DEFAULTIF等子句。所以请告诉我为什么我们在控制文件中使用这个子句。例如下面是用于参考的控制文件。

=
选项 (跳过 = 1)
加载数据特性集WE8MSWIN1252
文件 “$ 文件”
追加
进入表Customer_table
由 “|” 终止的字段
尾随NULLCOLS
(
"SOURCE_SYSTEM_NAME" CHAR NULLIF "SOURCE_SYSTEM_NAME" = 空白,
"OPERATING_UNIT" CHAR NULLIF "OPERATING_UNIT" = 空白,
"客户名称" CHAR NULLIF "客户名称" = 空白,
“LEGACY_CUSTOMER_NUMBER” CHAR NULLIF “LEGACY_CUSTOMER_NUMBER” = 空白,
"CUST_ACCT_NAME" CHAR NULLIF "CUST_ACCT_NAME" = 空白,
"SITE_NAME" CHAR NULLIF "SITE_NAME" = 空白,
"SITE_USAGE" CHAR NULLIF "SITE_USAGE" = 空白,
"CONTACT_FIRST_NAME" CHAR NULLIF "CONTACT_FIRST_NAME" = 空白,
"CONTACT_LAST_NAME" CHAR NULLIF "CONTACT_LAST_NAME" = 空白,
"CONTACT_EMAIL" CHAR NULLIF "CONTACT_EMAIL" = 空白,
"CONTACT_ROLE" CHAR NULLIF "CONTACT_ROLE" = 空白,
"CONTACT_PHONE" CHAR NULLIF "CONTACT_PHONE" = 空白,
"MOBILE_NUMBER" CHAR NULLIF "MOBILE_NUMBER" = 空白,
"FAX_NUMBER" CHAR NULLIF "FAX_NUMBER" = 空白,
"PHONE_COUNTRY_CODE" CHAR NULLIF "PHONE_COUNTRY_CODE" = 空白,
"PHONE_AREA_CODE" CHAR NULLIF "PHONE_AREA_CODE" = 空白,
CONTACT_STATUS "Trim (替换 (:CONTACT_STATUS,chr(13),'))",
由 “FND_GLOBAL.LOGIN_ID” 创建,
创建日期系统,
最后更新由 “FND_GLOBAL.LOGIN_ID”,
最后更新日期,
最后一次更新登录 “FND_GLOBAL.LOGIN_ID”
)

=
我通过删除null if和char第二次保留它们来加载数据,但我没有注意到它们之间的任何区别。

专家解答

CHAR将字段的数据类型指定为字符。这是默认的。

如果满足条件,则NULLIF将字段设置为null。所以:

NULLIF "FIELD"=BLANKS
复制


它说 “如果字段为空,则将其设置为null”。

如果DEFAULTIF条件为true,则如果数据为数字,则Oracle将字段设置为零。如果是非数字的,则将其设置为null。

NULLIF和DEFAULTIF之间的关系很复杂。文档解释了这些工作原理:

http://docs.oracle.com/database/122/SUTIL/oracle-sql-loader-field-list-contents.htm#SUTIL1202

有关所有子句的用途和用途的完整详细信息,请阅读文档:

http://docs.oracle.com/database/122/SUTIL/oracle-sql-loader-field-list-contents.htm#SUTIL006
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论