对使用ociuldr导出date类型数据的使用体会.

使用ociuldr导出date类型的数据

在使用ociuldr工具的时候,为了导出date类型的字段,最好使用to_char函数把date类型的字段转为你需要的字段如('yyyy-mm

-dd hh24:mi:ss')。有这样一个表结构:
Name        Type           Nullable Default Comments             
----------- -------------- -------- ------- ---------------------
ID          NUMBER         Y                                     
NAME        VARCHAR2(20)   Y                                     
AGE         NUMBER         Y                                     
DESCRIPTION NVARCHAR2(100) Y                                     
BIRTHDAY    DATE

有记录:
1 小明 10 淘气的孩子 1997-8-8 8:08:08 
2 小孙 11 爱学习的孩子 1996-8-8 9:09:09
 
在使用ociuldr导出数据的时候,最好写成如下(这里只关注query参数,其他的参数可以自己选择设置):
c:/>ociuldr user=scada/scada@orcl query="select id,name,age,description, to_char(birthday,'yyyy-mm-dd hh24:mi:ss')as birthday from tttt"  field=# record=0x0a file=D:/emp1.txt table=tttt

在d:/emp1.txt中的内容为:
1#小明 #10#淘气的孩子#1997-08-08 08:08:08
2#小孙#11#爱学习的孩子#1996-08-08 09:09:09

如果按照下面的方式导出数据:
c:/>ociuldr user=scada/scada@orcl query="select * from tttt"  field=# record=0x0a file=D:/emp1.txt table=tttt

在d:/emp1.txt中的内容为如下所示(只有年月日,没有时分秒):
1#小明 #10#淘气的孩子#08-8月 -97
2#小孙#11#爱学习的孩子#08-8月 -96

通过上面的分析,我们还可以知道在查询date类型的字段的时候,我们可以通过to_char的转换,转为任意格式的显示格式。
select to_char(birthday,'hh24:mi') from scada.tttt;
08:08
09:09

必须注意到在ociuldr中,把date类型的字段作为一个普通的String进行了处理。

使用sqlldr导入数据

删除tttt表中的记录通过sqlldr把导出的数据导入到tttt表中去,注意必须是第一次通过调用to_char使用yyyy-mm-dd hh24:mi:ss格式导出date类型记录.

注意: 当使用ociuldr生成控制脚本的时候,由于时间字段使用了to_char函数转换为了字符格式,因此在控制文件中date类型的字段变为了char字段,必须手动改为date,并且定义自己需要的格式.

控制文件tttt_sqlldr.ctl的内容是:
--
-- Generated by OCIULDR
--
OPTIONS(BINDSIZE=8388608,READSIZE=8388608,ERRORS=-1,ROWS=50000)
LOAD DATA
INFILE 'D:/emp1.txt' "STR X'0a'"
INTO TABLE tttt
FIELDS TERMINATED BY X'23' TRAILING NULLCOLS
(
  ID CHAR(40),
  NAME CHAR(20),
  AGE CHAR(40),
  DESCRIPTION CHAR(200),
  BIRTHDAY DATE "YYYY-MM-DD HH24:MI:SS"
)

在控制台命令行下运行: c:/>sqlldr scada/scada@orcl control=d:/tttt_sqlldr.ctl 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值