ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 【SQL*Loader】data型和timestamp型数据的导入问题

【SQL*Loader】data型和timestamp型数据的导入问题

原创 Linux操作系统 作者:chicheng_cn421 时间:2011-11-05 06:53:55 0 删除 编辑

早上在论坛上看到有朋友在讨论关于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/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-03-05

  • 博文量
    261
  • 访问量
    417491