db2import详解_数据导入出错-db2import导入

现象

db2

中对数据库进行import 导入数据操作

操作日志显示部分导入错误,错误:

SQL3148W A row from the input file was not

inserted into the table.

Some

data following ""0292|TMNO=ttyx5|CUNO=10205968" in row "334392"

and

column "6" was not loaded.

SQL3116W The field value in row "584959" and

column "1" is missing, but the

target

column is not nullable.

原因

数据文件中部分字符型字段的数据中存在回车和双引号导致DB2

IMPORT命令在执行导入操作时错误的读取了源数据,数据文件中存在空行。

分析

通过错误提示中的行号和列号查找源数据文件中的错误数据发现错误出数据

说明:

源数据中以逗号为字段分隔符,字符型字段数据前后已双引号括起来,每一行代表一条记录,如果字符型数据中的字符串包含双引号将被误认为字符串结束引号之后的为下个字段;如果字符型数据中的字符串包含回车,会导致该条记录被误认为两条记录,第二行将作为新的一条记录导入,从而导入第二行的数据与数据表结构不匹配;数据文件中两行数据之间如果存在空行导致数据库命令认为多出一行空记录与数据表结构不一致无法导入从而产生错误日志。

解决方法

1.获取源数据时去除多余引号和回车。

2.通过SHELL脚本中SED命令和TR命令替换到回车、空行、引号,命令如下:

sed -e '/^$/d' 用于去除数据文件中的多余空行

sed -e 's/^"/`/' -e 's/"$/`/' -e 's/,"/,`/g'

-e 's/",/`,/g' -e 's/"/#/g' -e 's/`/"/g' 用于替换字符型字段的字符串中的多余引号

sed -e

's/\"$/\"@/' | tr '\n' ' ' | tr '@' '\n' 用于替换字符型字段的字符串中的多余回车

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值