如何使用日期格式为yyyymmddhhmmss的SQLLDR加载文件?

时间:2017-01-27 20:36:40

标签: oracle sql-loader

我需要加载一个包含.csv文件的表,其中包含日期" 20140825145416"。
我在我的控制文件中尝试过使用(DT date" yyyymmdd hh24:mm:ss")。 它会抛出错误,因为ORA-01821:日期格式无法识别

我要求表中的数据为" MM / DD / YYYY HH:MM:SS"。
样本数据:20140825145416

提前感谢。

3 个答案:

答案 0 :(得分:3)

好吧,如果我没有指出正确的答案是永远不会将日期存储为VARCHAR2数据,那么我会失职,但要使其成为正确的DATE列并加载它:

 DT DATE "YYYYMMDDHH24MISS"

选择时完成格式化。如果您需要在计算中使用该日期,它将使您的生活变得更加轻松。

如果您无法控制数据库并且必须将其存储为VARCHAR2,请先转换为日期,然后在插入之前使用to_char进行格式化:

DT CHAR "to_char(to_date(:DT, 'YYYYMMDDHH24MISS'), 'MM/DD/YYYY HH24:MI:SS')"

注意'MI'用于分钟。你有一个错字,你再次使用'MM'(几个月)几分钟。

答案 1 :(得分:1)

我知道在上一个答案中已经说过了,但它非常重要,值得重复。不要将日期存储为varchars !!

答案 2 :(得分:0)

如果您的DT列是时间戳,那么这可能会起作用

DT CHAR(25) date_format TIMESTAMP mask "yyyymmddhhmiss"

我在外部表中使用了类似的东西。也许这可能有所帮助 https://docs.oracle.com/cd/B19306_01/server.102/b14215/et_concepts.htmhttps://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:8128892010789