[转载]关于DB2插入带有换行符的数据

标签:
转载 |
分类: 数据库 |
原文地址:关于DB2插入带有换行符的数据作者:ZombiePlaysYoga
数据库版本:DB2 v10.5.0.5
今天在进行一项数据import导入的时候,发现导入文件中有的内容有换行符,如下图红框内所示.
http://s6/mw690/001NJ4SQzy751rhZVT7c5&690
所带来的使用常规import语句进入数据库数据导入所带来的是结果就是仅会将第一行的数据成功导入,而将换行后的第二行视作无效行(因为格式不符)。如果只有这样一条记录的做Import的话会显示结果为尝试导入2行数据,1行成功,1行被拒绝(Rejected)。
网上查了一下,有些同学建议使用LOAD中的命令譬如“db2 load from test.del of del modified by delprioritychar insert into test2”来处理,但笔者管理的DB2数据库均是主备机HADR配置,其通过日志传输来保持主备机的同步。LOAD操作速度快,但不写日志,所以无法让HADR中的主备机同步而被禁止(DB CFG 参数 BLOCKNONLOGGED 控制)。
由于需要特殊处理的行数较少,于是最终采用了先将截断的数据导进数据库中,后再UPDATE的方式来进行修改。采用CHR(10)和CHR(13)来进行换行处理,在测试环境命令如下,可供参考。
http://s11/mw690/001NJ4SQzy751rMleL85a&690
可见,在INSERT语句中加入CHR(10)和CHR(13)成功将hello拆分成了2行。使用"select * from test"来查看,虽然看上去有3行数据,但其实下方的"he"和"llo"是一项数据,最下也显示了只有2条记录被选择。
有关CHR(10)和CHR(13),可参考相关文档。
但是如果需要更改的需换行数据较多,必须要在IMPORT环节或其他导入环节就处理完毕,也不能使用LOAD方式的话,究竟又该如何解决呢?
今天在进行一项数据import导入的时候,发现导入文件中有的内容有换行符,如下图红框内所示.
http://s6/mw690/001NJ4SQzy751rhZVT7c5&690
所带来的使用常规import语句进入数据库数据导入所带来的是结果就是仅会将第一行的数据成功导入,而将换行后的第二行视作无效行(因为格式不符)。如果只有这样一条记录的做Import的话会显示结果为尝试导入2行数据,1行成功,1行被拒绝(Rejected)。
网上查了一下,有些同学建议使用LOAD中的命令譬如“db2 load from test.del of del modified by delprioritychar insert into test2”来处理,但笔者管理的DB2数据库均是主备机HADR配置,其通过日志传输来保持主备机的同步。LOAD操作速度快,但不写日志,所以无法让HADR中的主备机同步而被禁止(DB CFG 参数 BLOCKNONLOGGED 控制)。
由于需要特殊处理的行数较少,于是最终采用了先将截断的数据导进数据库中,后再UPDATE的方式来进行修改。采用CHR(10)和CHR(13)来进行换行处理,在测试环境命令如下,可供参考。
http://s11/mw690/001NJ4SQzy751rMleL85a&690
可见,在INSERT语句中加入CHR(10)和CHR(13)成功将hello拆分成了2行。使用"select * from test"来查看,虽然看上去有3行数据,但其实下方的"he"和"llo"是一项数据,最下也显示了只有2条记录被选择。
有关CHR(10)和CHR(13),可参考相关文档。
但是如果需要更改的需换行数据较多,必须要在IMPORT环节或其他导入环节就处理完毕,也不能使用LOAD方式的话,究竟又该如何解决呢?