关闭

如何装载带有时间戳的数据

707人阅读 评论(0) 收藏 举报

使用以下语句,导入成功:

1、建表时使用TIMESTAMP类型

 

2、编写CONTROL文件时,使用“TIME             TIMESTAMP \"yyyymmddhh24missff6\"  ”

 

 

 

转载一篇文章:

http://blog.itpub.net/post/5493/226131

 

客户要load一段数据,中间有含有毫秒的日期型数据。
建表语句含有如下语句:
...
CA_VALUE_DATE date,
CA_POST_DATE date,
...

开始试着用to_char(sysdate,'..')语句测试怎样才能取出毫秒数据,始终未能如愿。
后来经google发现,这样的语句可以拿到毫秒级别数据:
select to_char(systimestamp,'yyyy-mm-dd hh24:mi:ssxff') time1,
to_char(current_timestamp) time2 from dual;


原来ff可以用来取出毫秒级别数据,于是修改control file如下:

LOAD DATA
APPEND INTO TABLE EP_CURRENT_CA_MOVEMENT
FIELDS TERMINATED BY X'09'
(
CA_CCY_CODE,
CA_AC_NUM,
CA_CIF_NUM,
CA_TRAN_REFNO,
CA_VALUE_DATE date "Mon DD YYYY HH12:MI:SS:ff3PM",
CA_POST_DATE date "Mon DD YYYY HH12:MI:SS:ff3PM",
CA_TRAN_AMT,
CA_RUN_BAL,
CA_TRAN_DESC,
CA_PRT_SEQ_NO,
CA_TRAN_CODE,
CA_TRAN_SOURCE,
CA_TRAN_IND,
CA_CS_FREQ,
CA_DATE_FROM date "Mon DD YYYY HH12:MI:SS:ff3PM",
CA_DATE_TO date "Mon DD YYYY HH12:MI:SS:ff3PM",
BOOKING_CENTER CONSTANT "SG"
)

涛声依旧,依然load不进去。
想起sysdate中也是取不出毫秒,想来应该是日期型数据没有存储毫秒的地方,修改建表语句:
...
CA_VALUE_DATE timestamp,
CA_POST_DATE timestamp,
...

再试,终于成功!!心情大畅。
附sqlldr启动语法如下:
sqlldr userid=username/password@instance control=c:table_name.ctl data=c:abc log=c:ep.log

 

 

**********************************************************************************

按照以上做法,没有成功。

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:156265次
    • 积分:1704
    • 等级:
    • 排名:千里之外
    • 原创:34篇
    • 转载:21篇
    • 译文:0篇
    • 评论:36条
    最新评论