DB2中所谓的数据移动,包括:
1.数据的导入(Import)
2.数据的导出(Export)
3.数据的装入(Load)
导入和装入都是利用DB2的相关命令把某种格式的文件中的数据保存到数据库中的表中
导出是指把DB2数据库的表中的数据保存到某种格式的文件当中去
数据移动的作用:
如果要在不同的数据库管理系统之间转移数据,数据移动通常是最实用的一种方法,因为任何一种数据库管理系统都支持常用的几种文件格式,通过这个通用的接口,就很容易实现不同系统间数据的转移。
这三个命令中,Export最简单,因为从表中向文件转移数据,通常不会出现错误,也不会有非法的数据。
在讲解命令之前,首先介绍一下文件的格式,用于DB2数据移动的文件格式有四种:
1.ASC——非定界ASCII文件,是一个ASCII字符流。数据流中的行由行定界符分隔,而行中的每一列则通过起始和结束位置来定义。例如:
10HeadOffice160CorporateNewYork
15NewEngland50EasternBoston
20MidAtlantic10EasternWashington
38SouthAtlantic30EasternAtlanta
42GreatLakes100MidwestChicago
51Plains140MidwestDallas
66Pacific270WesternSanFrancisco
84Mountain290WesternDenver
2.DEL——定界ASCII文件,也是一个ASCII字符流。数据流中的行由行定界符分隔,行中的列值由列定界符分隔。文件类型修饰符可用于修改这些定界符的默认值。例如:
10,"HeadOffice",160,"Corporate","NewYork"
15,"NewEngland",50,"Eastern","Boston"
20,"MidAtlantic",10,"Eastern","Washington"
38,"SouthAtlantic",30,"Eastern","Atlanta"
42,"GreatLakes",100,"Midwest","Chicago"
51,"Plains",140,"Midwest","Dallas"
66,"Pacific",270,"Western","SanFrancisco"
84,"Mountain",290,"Western","Denver"
3.WSF——(worksheetformat)为工作表格式,用于与Lotus系列的软件进行数据交换。
4.PC/IXF——是集成交换格式(IntegrationExchangeFormat,IXF)数据交换体系结构的改编版本,由一些列可变长度的记录构成,包括头记录、表记录、表中每列的列描述符记录以及表中每行的一条或多条数据记录。PC/IXF文件记录由包含了字符数据的字段组成。
第一部分:数据的导出(Export)
例一:把Org表中的所有数据导出到文件C:ORG.TXT中。
Exporttoc:org.txtofdelselect*fromorg
其中,ofdel表示导出到的文件的类型,在本例中导出到一个非定界文本文件中;后面的select*fromorg是一个SQL语句,该语句查询出来的结果就是要导出的数据。
例二:改变del格式文件的格式控制符
exporttoc:staff.txtofdelmodifiedbycoldel$chardeldecplusblankselect*fromstaff
在该例中,modified子句用于控制各种符号,coldel表示字段之间的间隔符,默认情况为逗号,现在改为$号;chardel表示字符串字段用什么符号引用,默认情况下为一对双引号括起来,现在改为用一对单引号括起来;decplusblank表示对于十进制数据类型,用空格代替最前面的加号,因为默认情况下会在十进制数据前面加上正负号的。
例三:以ASC格式将数据导出到文件
Export命令是不支持ASC格式文件的,所以如果想导出ASC这样规整的格式,需要程序员自己进行转换操作,思路是将各种数据类型都转换成定长字符串,然后把各个要导出的字段合并成为一个字段。
例如创建如下结构的表n:
createtablen(aint,bdate,ctime,dvarchar(5),echar(4),fdouble)
然后插入两条数据:
insertintonvalues(15,2004-10-21,23:12:23,abc,hh,35.2)
insertintonvalues(5,2004-1-21,3:12:23,bc,hhh,35.672)
要想把这两条数据以规整的格式导出到文件中,进行如下操作:
exporttoc:test.txtofd