oracle同时过滤两个参数,ORACLE SPOOL过程中两个至关重要的参数设置(原创)

ORACLE SPOOL过程中两个至关重要的参数设置(原创)

在编程实现 Oracle SPOOL -----> Sqlldr进行数据迁移的时候,发现了两个奇怪的问题:

1、源表中数值型字段到了目的表中值都一样,而实际在字段在源表中是主键,查看该字段在目的表中的值似乎都导成了源表中另外一个字段的值;

2、源表的数据导到目的表中,很多字段的值都丢了

于是从源表,抽数据的视图,目的表逐个字段查了一遍,没发现问题,程序也没问题,sqlldr本身也不会将数据重复插入。那么,问题在哪呢?经过一段时间的困惑后,终于发现问题在于SPOOL过程中的两个参数设置有问题。

第一个参数就是linesize,这直接决定了导出来的每行记录的长度,原来设置为500,也就是500个字符。而源表中字段很多,这样直接导致了SPOOL过程中只导出了一部分字段的值,这就会出现上面的问题2种所描述的现象;

第二个参数就是 numwidth ,也就是数值型字段的长度,原来设置为12,而源表和目的表的最大数值长度都是20,这样导出来的数据就只能是前面的12位,所以出现了问题一中所描述的现象。

大家以后如果采用这种方法进行数据迁移,请务必特别留心这两个参数的设置,免得再走很多弯路。

(如果转载本文请注明出处,或者加上本文链接,算是对我的一点点鼓励吧 :) )

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值