zoukankan      html  css  js  c++  java
  • DB2的数据移动:导入(Import)导出(Export)加载(Load)

    DB2的数据移动:导入(Import)导出(Export)加载(Load)
    _初六 2018-07-19 10:30:06 13202 收藏 15
    展开

    目录

    文件的格式

    DB2 export 工具(导出)

    DB2 import 工具(导入)

    DB2 load 工具(加载)

     DB2中的数据移动,包括:

    1. 数据的导入(Import)
    2. 数据的导出(Export)
    3. 数据的加载(Load)

    导入和加载都是利用DB2的相关命令把某种格式的文件中的数据保存到数据库中的表中;导出是指把DB2数据库的表中的数据保存到某种格式的文件当中去

    数据移动的作用: 如果要在不同的数据库管理系统之间转移数据,数据移动通常是最实用的一种方法,因为任何一种数据库管理系统都支持常用的几种文件格式,通过这个通用的接口,就很容易实现不同系统间数据的转移。
     

     
    文件的格式

    用于DB2数据移动的文件格式有四种:

    ASC = ASCII
    DEL = Delimited ASCII
    WSF = Work sheet format
    IXF = Integrated Exchange Format

    ASC 和 DEL 格式的文件是文本文件,可以用任何文本编辑器打开。

    WSF 格式的文件可以将数据迁移到电子表格软件中,例如 Excel,Lotus® 1-2-3。

    IXF 格式文件包括了数据表的数据描述语言(DDL)和里面的数据。使用 IXF 格式是非常方便的,利用它可以重建数据表,而其他格式则没有办法这么做.

    当数据导出到文件后,使用 Import 可以将数据由文件导入到数据表中。如果使用 ASC,DEL 和WSF 格式的文件作为中间文件,在它们导入之前数据表必须存在。而使用 IXF 格式的文件在导入前不需要存在相应的数据表。

    1.ASC:ASC——非定界ASCII文件,是一个ASCII字符流。数据流中的行由行定界符分隔,而行中的每一列则通过起始和结束位置来定义。

    2.DEL:DEL——定界ASCII文件,也是一个ASCII字符流。数据流中的行由行定界符分隔,行中的列值由列定界符分隔。文件类型修饰符可用于修改这些定界符的默认值。

    3. WSF:WSF——(work sheet format)为工作表格式,用于与Lotus系列的软件进行数据交换。

    4. PC/IXF:PC/IXF——是集成交换格式(Integration Exchange Format,IXF)数据交换体系结构的改编版本,由一些列可变长度的记录构成,包括头记录、表记录、表中每列的列描述符记录以及表中每行的一条或多条数据记录。PC/IXF文件记录由包含了字符数据的字段组成。

     
    DB2 export 工具(导出)

    DB2 UDB export 工具将数据从数据库表写到存储在数据库外面的一个或多个文件中。export 工具使用 SQL 从表中读取数据。export工具将数据所写到的文件可以是几种标准文件格式的一种,它仅支持三种数据文件格式:DEL,WSF,IXF。一般是IXF或DEL。除了要指定写到输出文件中的数据格式之外,还必须提供该文件的名称和一个用于指定输出数据的 SQL SELECT 语句。这就是启动基本的 DB2 导出操作所需的所有信息。

    图 1. DB2 EXPORT 命令的部分语法

    EXPORT 命令

    例1:把Org表中的所有数据导出到文件c:org.del中

    export to c:org.txt of del select * from org

    其中,of del表示导出到的文件的类型,在本例中导出到一个非定界文本文件中;后面的select * from org是一个SQL语句,该语句查询出来的结果就是要导出的数据。

    例2:改变del格式文件的格式控制符

    export to c:staff.del of del modified by coldel$ chardel'' decplusblank select * from staff

    文件类型修饰符:modified by 用于控制各种符号

    coldelx:指定x为新的单字符串定界符,表示字段之间的间隔符,默认情况为逗号(,),现在改为$号

    chardelx:指定x为新的单字符串列定界符,表示字符串字段用什么符号引用,默认情况下为一对双引号(" ")括起来,现在改为用一对单引号括起来。也可以无字符串分隔符nochardel

    decplusblank:指定对正数是否用+符号,缺省带+,可以指定不加正数符号,表示对于十进制数据类型,用空格代替最前面的加号,因为默认情况下会在十进制数据前面加上正负号的

    striplzeros:指定移走数据前导的0,例如:+00001.8 -> +1.8

    例3:大数据的导出

    export to d:myfile.del of del lobs to d:lob lobfile lobs modified by lobsinfile select * from emp_photo

    该命令把emp_photo表的数据导出到d:myfile.del文件中,其结果为:

        ;
        "000130","bitmap","lobs.001.0.43690/"
        "000130","gif","lobs.001.43690.29540/"
        "000130","xwd","lobs.001.73230.45800/"
        "000140","bitmap","lobs.001.119030.71798/"
        "000140","gif","lobs.001.190828.29143/"
        "000140","xwd","lobs.001.219971.73908/"
        "000150","bitmap","lobs.001.293879.73438/"
        "000150","gif","lobs.001.367317.39795/"
        "000150","xwd","lobs.001.407112.75547/"
        "000190","bitmap","lobs.001.482659.63542/"
        "000190","gif","lobs.001.546201.36088/"
        "000190","xwd","lobs.001.582289.65650/"
         ;

    BLOB类型:其中第三个字段是BLOB类型,在该文件中只保存了一个标志,相当于一个指针,真正的LOB数据保存在d:lob目录下的lobs.001、lobs.002、......等一系列文件中。命令中lobs to 后面指定大对象数据保存在什么路径下(注意,该路径必须事先已经存在,否则会报错),lobfile 后面指定大对象数据保存在什么文件中,不要指定扩展名,DB2会根据数据量自动追加.001、.002等扩展名,同时不要忘记加上modified by lobsinfile子句。

    例4:把导出信息保存在消息文件中。

    export to d:awards.ixf of ixf messages d:msgs.txt select * from staff where dept = 20

    这个例子把staff表中dept=20的数据导出到d:awards.ixf文件中,所有的导出信息都保存在d:msgs.txt文件中(无论是成功、警告还是失败信息),这样,管理员可以通过观察信息文件找到问题所在。

    例5:给导出数据列重命名。

    export to d:awards.ixf of ixf method n(c1,c2,c3,c4,c5,c6,c7) messages d:msgs.txt select * from staff where dept=20

    在默认情况下,导出的每一列数据以表中对应的字段名自动命名,我们可以通过method n子句给每一列重新命名,需要注意的是,这个子句只在ixf和wsf格式文件中有效,在文本文件中不能使用。

     
    DB2 import 工具(导入)

    DB2 UDB import 工具将数据从输入文件写到数据库表或可更新视图。import 工具使用 SQL INSERT 语句(或 SQL UPDATE 语句)将数据写到目标表中。import 工具从中读取数据的文件可以是几种标准文件格式中的一种,一般是 PC/IXF、DEL 或 ASC。

    除了要指定将从输入文件中读取的数据格式之外,还必须提供该文件的名称、目标表的名称,以及执行 import 工具的模式。这就是启动基本的 DB2 导入操作所需的所有信息。图 2 展示了 IMPORT 命令的部分语法图,其中只包含必需的参数。

    图 2. DB2 IMPORT 命令的部分语法

    IMPORT 命令

    主要的 DB2 导入模式有:

        INSERT 将输入数据添加到表中,并且不更改任何现有数据。
        INSERT_UPDATE 将新的输入数据添加到表中,或者用具有匹配主键值的输入数据更新现有的行。
        REPLACE (通过删除数据对象)删除表中的所有现有数据,然后再插入输入数据。
        REPLACE_CREATE 删除现有表中的所有数据,然后再插入输入数据。如果该表不存在,该模式将优先于插入输入数据而创建表。该模式只对 PC/IXF 输入文件有效。

     

    例1:把C盘根目录下的org.txt文件中的数据导入到org表中

    import from c:org.del of del insert into org

    导入命令和导出命令的格式基本上处于对应的关系,import对应export,from对应to,文件名和文件格式代表的含义相同,但是导入命令支持ASC格式的文件,而导出命令不支持。另外,在导出命令的最后是一个SQL语句,用于选择要导出的数据,而导入命令最后不是SQL语句,而是插入数据的方式以及目标表名称。

    例2:从ASC格式文件中导入数据

    import from  c:org2.txt of asc method l(1 5,6 19,20 25,26 37,38 50) insert into org

    其中 method l 子句用于指定文本文件中每一个字段的起始位置和终止位置,每个起始位置和终止位置间用空格分开,字段之间用逗号分开。(除了l方法之外,还有n方法和p方法)

    例3:利用n方法导入数据,并且创建新表。
    首先导出一个用例文件:

    export to d:org.ixf of ixf method n(a,b,c,d,e) select * from org

    这样org.ixf文件中有五列数据,对应的列名分别为a、b、c、d、e。然后在从该文件中导入数据到一个新表中

    import from d:org.ixf of ixf method n(d,e,b) replace_create into orgtest

    该命令从文件中选取三列导入到表中,顺序可以不按照文件中原有的列的顺序。

    例4:利用p方法导入数据

    import from d:org.ixf of ixf method p(4,5,2) replace into orgtest

    该例子执行的效果和例3类似,只是把n方法换成了p方法,p方法后面的列表中指明列的序号即可,不需要指明列名。另外,此例中使用了replace方式插入数据,这会把表中现有的数据都删除,然后向空表中插入数据。

    例5:关于空值的导入
    对于ixf格式的文件,导入空值非常方便,因为里面已经记录了空值的信息。但是,对于ASC格式文件就有一定的难度了,因为DB2会直接插入空格,而不是空值。为此,DB2提供了一个子句进行控制:NULL INDICATORS

    import from  c:org2.txt of asc MODIFIED BY nullindchar=# method l(1 5,6 19,20 25,26 37,38 50) NULL INDICATORS(0,0,0,0,38 ) replace into org

    在这个例子中,NULL INDICATORS子句后面是一个列表,表示前面四个字段都不会存在空值,而第五个字段从38列开始,可能存在空值,而 MODIFIED BY nullindchar=# 子句表示在文件中第五个字段如果遇到 # 号,则表示为空值。

     

     
    DB2 load 工具(加载)

    DB2 UDB load 工具非常高效地将一个或多个输入文件中的数据写到数据库表中。load 工具也从指定的管道、设备(比如磁带设备)或用户定义游标接受输入。load 工具与 import 工具不一样,不是使用 SQL 将数据写到目标表中;它是直接将格式化的页写到表中,因此比 import 工具要快得多。load 工具从中读取数据的文件可以是几种标准文件格式中的一种,一般是 PC/IXF、DEL 或 ASC。

    除了要指定从输入文件读取的数据格式之外,还必须提供该文件的名称、目标表的名称,以及执行 load 工具的模式。INSERT 模式添加输入数据到表中,并且不会更改任何现有数据。REPLACE 模式(通过删除数据对象)删除表中的所有现有数据,然后再插入输入数据。图 3 展示了 LOAD 命令的部分语法图,其中只包含必需的参数。

    图 3. DB2 LOAD 命令的部分语法

    LOAD 命令
    ————————————————
    版权声明:本文为CSDN博主「_初六」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/Elaine1006/article/details/81108967

  • 相关阅读:
    学习JavaScript 的必备 (一),让您对js的 function, javascript内置对象,this概念及之间的关系不再迷惑。(希望能置为推荐篇,为更多的js初学者关注)
    你人脉网中应该有的10种人
    十句话,不黄不色,但很经典~~~~~~~~~~
    js网站
    …↓爆》笑
    JavaScript使用技巧精萃
    JDK源码分析之Set类详解——适配器模式的应用
    好的程序员做不出好的软件设计
    JDK源码中ClassLoader的浅析
    提高编程技巧的十大方法
  • 原文地址:https://www.cnblogs.com/yaoyangding/p/12809341.html
Copyright © 2011-2022 走看看