早上在论坛上看到有朋友在讨论关于sqlloder如何装入类似1998-12-29 21:28:01.000 这种数据的问题,
很明显这是一个带毫秒的日期类型数据,准确的说是时间戳类型的数据,装着这种数据需要满足两个要求,
1、数据库中字段是timestamp类型
2、sqlloder写控制文件时需要使用'YYYY-MM-DD HH24:MI:SS.FFx'格式 (FFx最后的小x指的是精度 另外SS和FF之间是点(.)不是冒号(:))
那位朋友的问题:
--------------------------------
我从csv文件中装载数据
碰到日期一列格式是
1998-12-29 21:28:01
这种总是无法装载
controlfile
LOAD DATA
INFILE 'C:\test.CSV'
APPEND INTO TABLE test
FIELDS TERMINATED BY ","
(ENTRY DATE 'YYYY-MM-DD HH24:MI:SS')
真是搞笑啊,原因找到了,
我的数据是从SQL2K里面导出的CSV格式,其DATE格式是
YYYY-MM-DD HH:MI:SS.000
实际例子就是
1998-12-29 21:28:01.000
而SQL Loader不能直接导入这种带有.000的
要想办法在SQL Loader里面用函数把..000截取掉才能导入
我自己写的SQL老是有问题,
LOAD DATA
INFILE 'C:\test1.txt'
INTO TABLE test
FIELDS TERMINATED BY ","
(ENTRY date 'to_date(rtrim(:entry,'.000'),'YYYY-MM-DD HH24:MI:SS')')
请各位赐教
数据库中表格已经建好,ENTRT列格式也是Date
究竟是怎么回事呢?
--------------------------------
我的回帖:
-------------------------------
date 日期型数据没有存储毫秒的地方。
如果想存储毫秒 需要把相应列字段改为 timestamp 类型。
使用sqlloder向date型字段数据导入时,导入的数据精度是到秒级的,导入控制文件中的格式语句例子如下:
LOAD DATA
INFILE 'C:\test.CSV'
APPEND INTO TABLE test
FIELDS TERMINATED BY ","
(ENTRY DATE 'YYYY-MM-DD HH24:MI:SS')
使用sqlloder向date型字段数据导入时,导入的数据精度是到毫秒级的,导入控制文件中的格式语句例子:
LOAD DATA
INFILE 'C:\test.CSV'
APPEND INTO TABLE test
FIELDS TERMINATED BY ","
(ENTRY DATE 'YYYY-MM-DD HH24:MI:SS.FF3') --毫秒三位精度 如 1998-12-29 21:28:01.000
------------------------------
以上。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/20335819/viewspace-710263/
,如需转载,请注明出处,否则将追究法律责任。