问题描述
嗨,
我正在学习数据加载与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第二次保留它们来加载数据,但我没有注意到它们之间的任何区别。
我正在学习数据加载与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。所以:
它说 “如果字段为空,则将其设置为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
如果满足条件,则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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
【专家有话说第五期】在不同年龄段,DBA应该怎样规划自己的职业发展?
墨天轮编辑部
1306次阅读
2025-03-13 11:40:53
Oracle RAC ASM 磁盘组满了,无法扩容怎么在线处理?
Lucifer三思而后行
786次阅读
2025-03-17 11:33:53
Oracle+Deepseek+Dify 实现数据库数据实时分析
bicewow
712次阅读
2025-03-06 09:41:49
【ORACLE】ORACLE19C在19.13版本前的一个严重BUG-24761824
DarkAthena
573次阅读
2025-03-04 14:33:31
Oracle避坑指南|同名表导出难题:如何精准排除指定用户下的表?
szrsu
536次阅读
2025-03-05 00:42:34
2月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
461次阅读
2025-03-13 14:38:19
Ogg23ai高手必看-MySQL Innodb Cluster跟oracle的亲密接触
曹海峰
457次阅读
2025-03-04 21:56:13
【ORACLE】char类型和sql优化器发生的“错误”反应
DarkAthena
408次阅读
2025-03-04 23:05:01
Oracle 如何修改 db_unique_name?强迫症福音!
Lucifer三思而后行
348次阅读
2025-03-12 21:27:56
Oracle DataGuard高可用性解决方案详解
孙莹
309次阅读
2025-03-26 23:27:33