使用SQL*Loader向Oracle加载数据时指定固定日期报错求助
解决SQL*Loader加载时指定固定DATE字段的错误问题
问题原因
你的控制文件中直接给CREATED_TIME字段赋值字符串'2022-08-05',但Oracle的DATE类型需要符合会话默认日期格式的字符串,若默认格式不是YYYY-MM-DD,就会触发格式不匹配的错误。
解决方案
修改控制文件中CREATED_TIME的定义,使用TO_DATE函数显式指定日期格式,确保字符串能正确转换为DATE类型:
LOAD DATA --TRUNCATE APPEND INTO TABLE mcm.TEMP_2 FIELDS TERMINATED BY '|' TRAILING NULLCOLS ( EMAIL_ADDRESS_ NULLIF EMAIL_ADDRESS_ = BLANKS, EMAIL_PERMISSION_STATUS_ NULLIF EMAIL_PERMISSION_STATUS_ = BLANKS, CREATED_TIME "TO_DATE('2022-08-05', 'YYYY-MM-DD')" )
说明
- 用双引号包裹
TO_DATE函数是SQL*Loader的语法要求,确保函数被Oracle正确解析执行。 - 显式指定日期格式
YYYY-MM-DD,避免依赖会话默认格式导致的兼容性问题。 - 由于
CREATED_TIME是固定值,无需从数据文件读取字段,这样的写法完全符合需求。
内容的提问来源于stack exchange,提问作者Abdullah
相关产品推荐
相关产品推荐

