ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 【DB2】导入导出与数据装载

【DB2】导入导出与数据装载

原创 Linux操作系统 作者:肖_Sean 时间:2012-06-05 22:33:07 0 删除 编辑

数据移动工具
    IMPORT、EXPORT、LOAD(均一次只能处理一张表,主体处理表,也可以处理其他一些对象)
    支持以下格式的文件
     IXF - Integrated Exchange Format(推荐使用)
     DEL - Dellmlted ASCII(常用些)
     ASC - Non-dellmlted ASCII
     WSF - Work Sheet Format
   
    db2move - 适用于导出多张表和其他数据集,格式必须为IXF
              相当于对IMPORT、EXPORT、LOAD的批处理模式
             
    a、EXPORT
       a.1 本质:使用SELECT语句从数据库中导出数据
       a.2 支持的导出数据格式(主要的):
         - IXF 包含表定义,最多的属性和索引描述
         - DEL Dellmlted ASCII Format
       a.3 使用MESSAGES选项能够记录错误信息、警告信息和导出成功的记录数信息
       语法:
       EXPORT TO {file-name(文件名,可指定路径)} OF {file-type(文件类型)}
             MESSAGES{message-file(记录信息的文件,可指定路径)}{SELECT-statement}
      
      
    其他的附加选项可以通过MODIFIED BY 定制导出操作,例如:分隔符,代码页等
    如:EXPORT TO {file-name} OF {file-type}
          MODIFIED BY {file-type-modifier}
          MESSAGES{message-file}{SELECT-statement}
   
    examples:
    EXPORT TO emp_photo.ixf of IXF
       MESSAGES /db2log/exp.msg  (MESSAGES can be used to record output messages)
           SELECT * FROM emp_photo;
   
    EXPORT TO employee.del of DEL
       MODIFIED BY chardel'' coldel!(MODIFIERS can be used to customize output data file)
       SELECT firstname,lastname
           FROM employee
                  FETCH FIRST 10 ROWS ONLY;-- 分隔符可以自己定义
             
    导出大对象
    - 缺省情况下,每个LOB的值最大只能导出32KB,以便与其他列内容能够存放于
      同一文件中,如果超过了32KB,则会被截断,对于32KB的大字段,应当单独指定文件
    - 可以使用LOBSINFILE参数指定多个LOB存入单一的文件
    - LOB位置指定符是一个能够找到LOB数据位置的字符串
   
    EXAMPLE:(大于32KB的文件)
            EXPORT TO EMP.DEL OF DEL  
                LOBFILE C:\temp\emp.LOBS(指定路径)
                MODIFIED BY LOBSINFILE (指定多个LOB存入单一的文件)
                  SELECT * FROM EMP;
            结果:EMP.DEL中LOB字段大于32KB的所有记录都存在于EMP.LOBS,通过这种方式将
                 解决数据库表中的大字段被截断的情况
  
   b、IMPORT:从一个文件向数据库表导入数据(记录日志,速度较慢)
      b.1 导入文件格式:IXF、DEL、ASC(Flxed length ASCII)
      b.2 使用MESSAGES选项能够记录错误信息、警告信息和导出成功的记录数信息
     
      语法:
      IMPORT FROM myfile.ixf
            OF IXF MESSAGES msg.out
            [INSERT/INSERT_UPDATE/REPLACE/REPLACE_CREATE/CREATE]
            INTO newtab;
      INSERT:将输入数据插入到目标表,不更改现有数据
      INSERT_UPDATE:使用数入行的值更新具有匹配主键值的行,若不匹配,则插入
      REPLACE:删除所有现有数据并插入数据,保留表和索引定义
      REPLACE_CREATE:删除所有现有数据并插入导入数据,同时保留表和索引定义
                      如果目标表和索引不存在,则创建目标表和索引
      CREATE:创建目标表和索引,可指定在其中创建新表的表空间名称
     
      examples:
       IMPORT FROM emp.ixf OF IXF
         COMMITCOUNT 1000
         MESSAGES{message-file}
         REPLACE_CREATE
         INTO emp;
      注意:COMMITCOUNT 1000(插入记录数达到1000则自动COMMIT一次)
      a、IMPORT整个过程时记录日志的,插入数据量特别大提交可能不成功;
      b、即使提交成功,也会影响性能;
     
   c、LOAD(不记录日志):是高速、底层的数据装载器
                         更快,适合大数据量
      LOAD过程分4个阶段:
      1、装入
         将数据装入到表中,必要时收集索引键和表统计信息。并且,将根据LOAD命令中
         的SAVECOUNT参数指定的时间间隔简历保存点或者一致点,将生成信息以指示在
         保存点成功装入的输入行数
      2、构建
         根据装入阶段的索引键生成索引,对索引排序,收集索引统计信息
      3、删除
         删除导致唯一键或主键违例的行,如果指定了装入异常表,被删除的行则被存在此表中
      4、索引复制
         将索引数据从系统临时表空间复制到原始表空间,在指定了READ ACCESS选项的装入
         操作期间,仅当指定使用系统临时表空间来创建索引时,才会出现这种情况
     
      - 支持的格式包括DEL、ASC、PC/IXF,游标
      - 使用MESSAGES选项能够记录错误信息、警告信息和其他信息
      - 在LOAD之前,目标必须存在,而且不能是系统表或者临时表
      - 所需要的授权与权利
        - 必须有SYSADM,DBADM,或者LOAD权限
        - INSERT模式必须有INSERT权限
        - RELPACE模式必须有INSERT和DELETE权限
      语法:
      LOAD FROM emp.ixf OF IXF
        MODIFIED BY {file-type modifiers} -- MODIFIERD BY can apply modifiers to define data format
        MESSAGES {message-file}
        REPLACE INTO emp;
      SET INTEGRITY FOR emp
          ALL IMMEDIATE UNCHECKED;  -- 唯一键的校验
         
      实际操作中,使用load的时候可能会发生破坏表完整性约束的情况,需要执行set integrity for
      immediate checked消除表check pending的状态。

         
   d、db2move
    EASY way to move a set of tables and data
    语法:db2move         [    database-name:数据库名称(想要移动的表所在数据库)
    action:要执行的操作(export、import、load)
    option:指定一个选项来定义操作的范围。
    例如,可以将一个操作限制在特定的表(-tn)、表空间(-ts)、表创建者(-tc)或模式名(-sn)范围内。
    指定表、表空间或表的创建者的一个子集只对   export   操作有效。如果指定多个值,就必须使用逗号将其分隔开;
    在值列表项之间不允许有空格。可以指定的项最多为   10   个。
   
    -io   import-option
     指定DB2的import工具可以运行的一种模式。
     有效的选项有:CREATE、INSERT、INSERT_UPDATE、REPLACE和REPLACE_CREATE。缺省值为REPLACE_CREATE。

    -lo   load-option
    指定DB2的load工具可以运行的一种模式。有效的选项有:INSERT和REPLACE。缺省值为   INSERT。

    -l   lobpaths
    指定要创建或查找的LOB文件的位置。必须指定一个或多个绝对路径名。如果指定了多个绝对路径,就必须使用逗号将其分隔开;
    值之间不允许有空格。缺省值是当前目录。

    -u   userid
    指定一个用户ID,该工具可以使用这个用户 ID 登录到远程系统上。

    -p   password
    指定对该用户进行认证的密码;该工具需要使用一个有效的用户ID和密码登录到远程系统上。

    db2move是DB2数据转移命令,用于不同操作系统之间(如linux和windows)的数据转移.

    可以先用db2move export将数据导出,然后在另一个DB2里用db2move import或db2move load导入数据.
    导出方法:
    建立一个空文件夹,进入该文件夹使用
    db2move Mydatabase export 导出数据.
    导入方法:
    进入导出的文件夹,输入命令db2move Newdb load
    在导完数据后,用脚本创建索引和视图,以及授权等操作。这样可以防止破坏表的完整性。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26952448/viewspace-732000/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2012-05-07

  • 博文量
    9
  • 访问量
    31879