Chinaunix首页 | 论坛 | 博客
  • 博客访问: 371030
  • 博文数量: 28
  • 博客积分: 455
  • 博客等级: 下士
  • 技术积分: 445
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-09 11:10
文章分类

全部博文(28)

文章存档

2016年(5)

2014年(1)

2013年(10)

2011年(7)

2010年(5)

我的朋友

分类:

2010-04-12 13:26:04

1、字段分隔符
 
考虑到字符类型数据中可能出现各种各样的字符,不采用键盘上的可见字符作为字符分隔符,于是选用ASCII码值等于1的字符作为字段分隔符:
 
Teradata:
 

select '01'xc

DB2装载:
 

OF DEL MODIFIED BY COLDEL0X01

 

2、字符数据分隔符:

DB2的导出和装载默认是有字符数据分隔符的,就是双引号“"”

一般情况下,Teradata导出数据不需要字符数据分隔符,这样可以减小导出数据文件的大小,对导出和装载的效率会有一定的提升

DB2装载:
 

OF DEL MODIFIED BY COLDEL0X01 NOCHARDEL

 

而在实际的数据中,会有这样的情况:字符类型的值中出现了换行符,此时如果按照默认的选项装载,换行符被认为是记录的分隔符,装载时就会把一个换行符当作本条记录的结束,势必会出错。

对于这种少有的情况,采用特殊办法进行处理:从Teradata导出时,给字符类型的数据增加分隔符,DB2装载时指定字符数据的分隔符,并且改变分割符的处理优先级,默认的处理优先级是“记录”> “字符”,使用load命令选项“delprioritychar”改变其顺序为:“字符”>“记录”。

和字段分隔符类似,考虑到字符数据中可能出现任意字符,选用ASCII码值等于2的字符作为字符数据分隔符。

Teradata:

select '02'xc

 

DB2装载:
 

OF DEL MODIFIED BY COLDEL0X01 CHARDEL0X02 DELPRIORITYCHAR

 

另:

这种特殊情况,从Teradata->DB2可以用以上的方法处理,但是如果反过来,如果需要从DB2->Teradata来进行数据的同步,就无法实现,Teradata的fastload工具没有提供DB2类似的功能,或者有解决办法,我现在不知道。

阅读(3661) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~