• DB2 移动数据总结一


    数据移动参考的连接

    IMPORT
    http://www-01.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/com.ibm.db2.luw.admin.cmd.doc/doc/r0008304.html?cp=SSEPGG_9.7.0%2F3-6-2-4-58

    EXPORT
    http://www-01.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/com.ibm.db2.luw.admin.cmd.doc/doc/r0008303.html?cp=SSEPGG_9.7.0%2F3-6-2-4-36

    LOAD
    http://www-01.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/com.ibm.db2.luw.admin.cmd.doc/doc/r0008305.html?cp=SSEPGG_9.7.0%2F3-6-2-4-78

    lob export
    http://www-01.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/com.ibm.db2.luw.admin.dm.doc/doc/c0004562.html

    table export
    http://www-01.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/com.ibm.db2.luw.admin.dm.doc/doc/c0004561.html

    type table export
    http://www-01.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/com.ibm.db2.luw.admin.dm.doc/doc/c0050960.html

    LBAC-protected data export considerations
    http://www-01.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/com.ibm.db2.luw.admin.dm.doc/doc/c0024643.html

    Identity column export considerations
    http://www-01.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/com.ibm.db2.luw.admin.dm.doc/doc/c0004560.html


    移动工具
    import/export
    load

    db2look/db2move
    db2dart

    使用数据移动的场景及问题
    1.在对某表做大量修改时,特别是CR时,检查数据库的备份记录,是否有最近的备份文件,如果有,请客户确认如果出现问题是否可用;另一种,就是做数据的临时备份,这时我们需要DataMovement Tools
    如何评估表中的数据量大小

    如何方便的查看表中是否含有标识列
    db2 "select distinct identity from syscat.columns where tabname = 'XXXX'"
    
    如何方便的查看表中是否含有lob列
    db2 "select TABSCHEMA concat '.'||TABNAME from syscat.columns where typename like '%LOB' and TABSCHEMA not like '%IBM%' and not like 'SYS%'" | grep -i xxxxx
    
    
    另一种方式是查看表的定义
    db2look -d db_name -t t1 t2 -e -o db2look_tables.out;cat db2look_tables.out
    e.g. db2look -d sample -t dbv97fp7.employee   -e
    NOTE:如果在-t选项做了某表的alias,那么将不会导出数据


    2. 在跨操作系统情况下,恢复数据库,在这种情况下,无法使用offline 或online 备份文件进行数据库恢复
    似乎export 无法完成这样的工作啊,因为语法上是需要select 语句导出数据的,该如何实现的呢?
    db2look+db2move

    3. 表数据迁移,有时,客户需要将一个表中的数据迁移到另一个表中,其中表的定义可能不一致的


    标识列:
    NOTE:标识列导入导出的注意事项
    1) 在原数据中没有标识列的情况下导入到含有标识列的表
    A B C  --->  A B i1 C
    NOTE:这是原数据中的列数小于目标表中的列数的特殊情况

    2)在原数据中带有标识列的情况下导入到含有标识列的表
    A B i1 C ---> A B i1 C

    3)目标表带有 generated always 的标识列,不需要导入文件中的标识列值

    4)目标表带有 generated always 的标识列,需要使用载入原数据中标识列的值
    NOTE:普通的identity能否使用identityoverride 文件修饰符

    5)导入文件中含有标识列,但是表中不包含标识列
    NOTE:这是目标表列数小于原数据列数的特例

    生成列:
    导入注意事项:
    没有使用文件类型修饰符时,将会按照如下规则进行
    1)当数据文件中相应的行缺少生成列的值或提供了NULL值时,将创建生成列值;
    直接导入将导致生成列后的列的值,无法导入必须使用如下方法
    2)如果为生成列提供了非空值,那么将拒绝该行(SQL3550W)

    生成列与标识列有类似的问题
    导入和导出生成列同样有类似与标识列的文件修饰符 generatedignore,generatedmissing,generatedoverride
    NOTE:使用load 和文件修饰符 generatedoverride 会出现如下问题,该如何处理
    SQL0668N  Operation not allowed for reason code "1" on table "DBV97FP7.TBGE".SQLSTATE=57016 ????

    3)如果为不可空生成列创建了NULL值,例如如果将列定义为两个表列之和,但这两个表列的文件中含有NULL值,那么会发生这种情况,那么将拒绝整行(SQL0407N)

    大对象的导入导出:
    导出大对象(LOB)列的表时,默认操作是对每个LOB值导出最多32KB,以便将其与列数据的余下部分放在同一个文件中。如果要导出超过32KB的LOB值,那么应将LOB数据写至单独文件以便截断。
    要指定应将LOB写至自己的文件,可以使用lobsinfile文件修饰符。此文件类型修饰符指示EXPORT使用程序将LOB数据放置在LOBS TO 子句指定的目录中。使用LOBS TO 或LOBFILE会隐式激活lobsinfile文件类型修饰符。
    默认情况下,LOB值与导出的关系数据将写至同一路径。如果LOBS TO 选项指定了一个或多个路径,那么EXPORT使用程序将循环使用这些LOB路径,以便每个成功的LOB值写入相应的LOB文件。
    可以使用lobfile选项对输出LOB文件指定名称。如果指定了LOBFILE选项,那么LOBFILENAME的格式为lobfilespecxxx.lob,其中lobfilespec是为LOBFILE选项指定的值,而xxx是 EXPORT使用程序生存的lob文件的序号,否则,lobfilename的格式为exportfilename.xxx.lob,其中exportfilename是为EXPORT命令指定的已输出文件格式名称,而xxx是export实用程序输出的lob文件的序列号
    默认情况下,多个LOB将写至单个文件,如果将各个LOB存储在不同的文件中,可以使用lobsinfepfiles文件修饰符已将每个LOB写至单独的文件(如何解释各个LOB)


    空值:
    对于空值的处理,往往会有很多问题,比如
    1)我们在导入列是空值时,完成插入一个默认值,而非空,避免存在列有非空限制,导致数据导入失败;
    2)对于变成字符列来说 ,对于导入的数据,往往希望将字符尾部的空格自动消除掉,但是事与愿违,导入的数据将会保留尾部的null or blank;
    3)数据库默认情况下,会消除字符串前面的空格,有时候,我们希望保留,比如是名字的前面

    对于null处理数据库提供了如下文件修饰符 nullindchar striptnulls  striptblanks  keepblanks

    定界符:
    什么是定界符?
    定界符包括哪些类型,分别什么意思?  record delimiter, character delimiter, column delimiter

    对于定界符的作用,往往是避免数据库识别错误文件数据。
    1)我们的数据,有时候需要导入的数据如下
    I am 6" tall
    数据中不包含字符定界符,""是数据而不是定界符的情况;  ----这里的两种处理方式(取消字符定界符,修改字符定界符为其他)
    2)我们想导出的数据不包含字符定界符;
    3)字符定界符““与数据冲突,想改变字符定界符;
    4)"Vincent <row delimiter> is a manager", <row delimiter>
    "Vincent
    is a manager"
    "Bob
    is a employee"
    导入的数据库中;

    数据库提供如下的文件修饰符:nodoubledel,
    chardel,coldel,delprioritychar
    双字符定界符
    ""  ---解释一下双字符定界符
    字符定界符,列定界符,行定界符(记录定界符)

    PC/IXF:
    特点一:
    典型导出操作包括插入到现有表中所选数据的输出,当然也可以导出整个表,以备以后使用import重建表。这种情况,必须指定文件格式为PC/IXF,然后通过CREATE 方式创建已保存表(包括索引)。但是出现以下任何情况,某些数据将不会保存到IXF文件中

    特点二:
    该文件是二进制文件,可以跨平台使用,并且文件占用空间小。

    数据库有两个文件修饰符
    indexixf,nochecklengths

    日期格式:
    在不同平台和系统上进行数据移动时,日期格式容易出问题。
    这几个文件修饰符仅用于ASC和DEL格式
    dateformat
    datesiso
    timeformat
    timestampformat

    这两个没有研究呢
    代码页不同
    XML

    1. 原理通透 2. 思路清晰 3.操作娴熟
  • 相关阅读:
    19冒烟测试和回归测试
    sandboxie配置文件
    Security Descriptor
    sbiedll.dll log
    Process Memory
    资源同步
    卸载列出残留进程
    sandboxie注入
    LPC
    Changing Environment Variables
  • 原文地址:https://www.cnblogs.com/DBA-Ivan/p/4197259.html
Copyright © 2020-2023  润新知