首页 > 解决方案 > 在 SQL Loader 中重新格式化日期

问题描述

我正在使用 SQL Loader 加载 Oracle 表,但日期格式存在问题。包含数据的 CSV 文件包含格式为 YYYY-MM-DD HH:MM:SS 的字符串,但 Oracle 表需要 DD-MON-YY 的日期格式。

我目前正在逐行浏览 CSV 文件以查找并重新格式化加载前的任何日期,但文件可以达到 10M+ 行,这可能是一个非常缓慢的过程。SQL Loader 是否允许在负载中重新格式化日期?

我正在寻找类似的东西

LOAD DATA
INFILE 'data.csv'
TRUNCATE
INTO TABLE data
FIELDS TERMINATED BY '|'
TRAILING NULLCOLS
(
COL1,
COL2,
CREATED_DATE DATE 'DD-MON-YY',
LAST_UPDT_DATE DATE 'DD-MON-YY
)

我已经阅读了有关此 DATE 命令可以自动格式化日期的建议,但到目前为止还没有运气。

标签: oracledatesql-loader

解决方案


假设created_datelast_updt_date实际上定义为date在数据库中,它们没有格式。它们以人类不可读的内部打包二进制格式存储。

您的控制文件需要指定平面文件中表示日期的字符串格式。您说格式是“YYYY-MM-DD HH:MM:SS”,但这没有意义。分钟是 MI 而不是 MM,所以我认为这是一种类型。HH 是 12 小时时间格式,但如果没有 AM/PM 指示符,则没有任何意义。所以我猜你的字符串使用的是 24 小时时间格式,即 HH24。所以我的猜测是你想要

CREATED_DATE DATE 'YYYY-MM-DD HH24:MI:SS',

推荐阅读