互联网服务

load不用回车换行标示一条记录

在项目中出现一种情况,从表中export记录时,存在有个字段(varchar) 里面存在回车换行,这个导出的del文件中,会把原有的一行变成多行,
我想将这份数据重新导入到一个新的表中,但是存在一行变成多行的,所以load时候会报错,应该如何解决~
  我想保留数据的原格式,不要用replace之类的函数(去掉回车换行)。

希望各位专家帮忙解决下~谢谢~~


谢谢大家的解答,大家的方法都不错~~呵呵~~
参与6

5 同行回答

leo_wyn leo_wyn 商业智能工程师 Security
3F和5F的方法都不错!:victory:显示全部
3F和5F的方法都不错!:victory: 收起
系统集成 · 2013-01-17
浏览343
fengwhq fengwhq 联盟成员 数据库管理员 某城商行
我都习惯导出为ixf了,不容易出问题,哈哈ixf格式可以保留正常格式导入显示全部
我都习惯导出为ixf了,不容易出问题,哈哈ixf格式可以保留正常格式导入 收起
银行 · 2013-01-17
浏览311
ppjava2009 ppjava2009 系统工程师 用友汽车信息科技(上海)有限公司
刚才帮楼主试了一下这个问题有办法解决:--用于查询字段内容是否有回车换行 SELECT * FROM tablea WHERE posstr(cola,chr(13)||chr(10))>0 FETCH FIRST 10 ROWS ONLY; --数据EXPORT之前做下处理 UPDATE tablea SET err_stack=replace(cola,chr(13)||chr(10),'^') ; --数据LOAD...显示全部
刚才帮楼主试了一下这个问题有办法解决:
--用于查询字段内容是否有回车换行
SELECT * FROM tablea WHERE posstr(cola,chr(13)||chr(10))>0 FETCH FIRST 10 ROWS ONLY;
--数据EXPORT之前做下处理
UPDATE tablea SET err_stack=replace(cola,chr(13)||chr(10),'^') ;
--数据LOAD之后做下处理
UPDATE tablea SET err_stack=replace(cola,'^',chr(13)||chr(10));


基本思路就是在导出数据之前将回车换行符替换成自己认为数据库没有用到的特殊字符,
然后在数据LOAD进库之后,再将自己设定的特殊字符替换成回车换行。

注意:
1、如果是生产库,建议导出之前创建COPY表,在COPY表上操作
2、类似的还有双引号、逗号也需要替换
双引号:chr(34)
逗  号:chr(44)
3、数据导出导入,像这种文本格式的要注意客户端字符集 收起
互联网服务 · 2013-01-16
浏览368
jlandzpa jlandzpa 系统运维工程师 广州华南资讯科技有限公司
详细过程列一下吧显示全部
详细过程列一下吧 收起
系统集成 · 2013-01-16
浏览349
lauyatsao lauyatsao 软件开发工程师 江苏南京
请楼主参考file type modifier中的delprioritychar,或许可以直接解决遇到的问题。显示全部
请楼主参考file type modifier中的delprioritychar,或许可以直接解决遇到的问题。 收起
互联网服务 · 2013-01-16
浏览333

提问者

xylsmile
研发工程师 金智科技
评论27

问题状态

  • 发布时间:2013-01-16
  • 关注会员:1 人
  • 问题浏览:2496
  • 最近回答:2013-01-17
  • X社区推广