DB2数据库在使用load命令导入问题

在使用load命令实现从客户端导入数据到服务器上时,

load client from 'G:\dysj\2014-12-31_CBOD_CICIECIF.del' of del modified by  delprioritychar replace into CBOD_CICIECIF NONRECOVERABLE;

client 是表示客户端

'G:\dysj\2014-12-31_CBOD_CICIECIF.del' 我的路径,最好不要带中文

modified by  delprioritychar 表示过滤换行空格,具体百度吧

CBOD_CICIECIF 我的表名

NONRECOVERABLE 表示表空间不备份,不然会报警告。


但是在执行上面命名时候还是暴力如下警告,导致数据插入不了。

报警告SQL3125W  The character data in rows "F2-1" and column "1" was truncated 

because the data is longer than the target database column.

Number of rows read         = 21630   --读取到21630行
Number of rows skipped      = 0
Number of rows loaded       = 0
Number of rows rejected     = 21630  --拒绝插入21630行
Number of rows deleted      = 0
Number of rows committed    = 21630  也就是说没有插入成功。

从上面的警告可以看出是第一rows(行)的第一列的源数据太长,而数据库表的相应列的字段太短,导致被截取出错。

初步怀疑是没有识别列的分隔符导致的错误。

在.del格式的文件下怎么确认列和列呢?也就是列的分隔符,用notepad打开显示有GS的分隔符,这是使用ascll作为隐藏的分隔符,查询得知GS的ascll十六进制是1D.load 改成如下语句就可以导入了

load client from 'G:\dysj\2014-12-31_CBOD_CICIECIF.del' of del modified by  codepage=1386 
coldel0X1D delprioritychar replace into CBOD_CICIECIF NONRECOVERABLE;

codepage=1386 --处理源文件中文导入产生的乱码。
coldel0X1D   --处理分隔符,0X1D表示十六进制的GS(分组符,英文缩写,具体的就对照ascll码修改吧)


最近又遇到新的情况,在列里面有特殊字符,如“或者,等,load语法的del格式文件时默认”作为一列字符串的分隔符,如果包含",那么一列可能和下一个分号"这中间的所有字符作为一列,这样也会导致截取,导入数据不全,从而load只能导入一部分数据,这时候可以用chardel0X2C来确定字符串的分隔符,和coldel一样的含义,就不多说了,2C也可以换成其他ascii码。









  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值