db2 import export load

DB2中所谓的数额移动,包括: 

  1. 数的导入(Import) 
  2. 数码的导出(Export) 
  3. 多少的装(Load) 
    导入和装都是运DB2的相关命令将某种格式的公文被的数额保存及数据库被之表中 
    导出是依靠把DB2数据库的表中的数据保存及某种格式的文件中去 
    多少移动的意: 
    要一旦在不同之数据库管理网间变数据,数据移动通常是极其实用的平等种方法,因为任何一样栽数据库管理网都支持常用的几乎种文件格式,通过之通用的接口,就格外轻实现不同系统内数的变换。 
    立三个指令中,Export最简单易行,因为从表中为文件转移数据,通常不会见现出谬误,也无见面时有发生非法的数码。 
    当授课命令之前,首先介绍一下文件之格式,用于DB2数据移动的文件格式有四栽: 
    1.
    ASC——非定界ASCII文件,是一个ASCII字符流。数据流中的行由行定界符分隔,而推行遭的各国一样排则经过起始与收位置来定义。例如: 
    10   Head Office     160   Corporate   New York 
    15   New England  50     Eastern       Boston 
    20   Mid Atlantic     10     Eastern       Washington 
    38   South Atlantic 30     Eastern       Atlanta 
    42   Great Lakes    100   Midwest      Chicago 
    51   Plains              140   Midwest      Dallas 
    66   Pacific              270   Western     San Francisco 
    84   Mountain         290   Western     Denver 
    2.
    DEL——定界ASCII文件,也是一个ASCII字符流。数据流中的行由行定界符分隔,行被的列值由列定界符分隔。文件类型修饰符可用于修改这些定界符的默认值。例如: 
    10,”Head Office”,160,”Corporate”,”New York” 
    15,”New England”,50,”Eastern”,”Boston” 
    20,”Mid Atlantic”,10,”Eastern”,”Washington” 
    38,”South Atlantic”,30,”Eastern”,”Atlanta” 
    42,”Great Lakes”,100,”Midwest”,”Chicago” 
    51,”Plains”,140,”Midwest”,”Dallas” 
    66,”Pacific”,270,”Western”,”San Francisco” 
    84,”Mountain”,290,”Western”,”Denver” 
  4. WSF——(work sheet
    format)为工作表格式,用于和Lotus系列的软件拓展数据交换。 
  5. PC/IXF——是集成交换格式(Integration Exchange
    Format,IXF)数据交换体系布局的改编版本,由有列可转换长的笔录构成,包括头记录、表记录、表中每列的排描述符记录以及表中每行的等同长条或多长
    数据记录。PC/IXF 文件记录由包含了字符数据的字段组成。 
    先是有:数据的导出(Export) 
    条例一:把Org表中之兼具数据导出到文件C:\ORG.TXT中。 
    Export to c:\org.txt of del select * from org 
    内,of
    del代表导出到的文件的品类,在本例中导出到一个非定界文本文件被;后面的select
    * from org是一个SQL语句,该语句询问出来的结果就是设导出的多寡。 
    例二:改变del格式文件的格式控制符 
    export to c:\staff.txt of del modified by coldel$ chardel”
    decplusblank select * from staff 

    该例中,modified子句用于控制各种符号,coldel表示字段之间的间隔符,默认情况吧逗号,现在改成也$号;chardel表示字符串字段用什么
    符号引用,默认情况下呢同样对准双引号括起来,现在改吧所以同对单引号括起来;decplusblank代表对此十进制数据类型,用空格代替最前头的加号,因为
    默认情况下会当十进制数据前面加上正负号的。 
    例三:以ASC格式将数据导出到文件 
    Export命令是匪支持ASC格式文件的,所以如果想导出ASC这样规整的格式,需要程序员自己进行换操作,思路是将各种数据列且转移成定长字符串,然后将各个要导出的字段合并成一个字段。 
    譬如创建如下结构的表n: 
    create table n(a int,b date,c time,d varchar(5),e char(4),f double) 
    接下来插入两长条数据: 
    insert into n values(15,’2004-10-21′,’23:12:23′,’abc’,’hh’,35.2) 
    insert into n values(5,’2004-1-21′,’3:12:23′,’bc’,’hhh’,35.672) 
    假若惦记管当下片漫漫数据以盘整的格式导出到文件被,进行如下操作: 
    export to c:\test.txt of del select char(a) || char(b) || char(c) ||
    char(d,5) || e || char(f) as tmp from n 
    然导出的结果跟ASC格式的文件特别类似,只是每一行的前后多发生了同等针对性双引号,对这个我们可以用文本工具(如写字板、记事本等)把对引号删除掉,也堪置之不理,在事后导入的时段一直控制格式(忽略对引号) 
    在文书中之格式为: 
    “15         2004-10-2123.12.23abc  hh  3.52E1                  ” 
    “5          2004-01-2103.12.23bc   hhh 3.5672E1                ” 
    例四:大数额的导出 
    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类型,在该文件中单单保留了一个标志,相当给一个指针,真正的LOB数据保存在d:\lob目录下之lobs.001、
lobs.002、……等同样多重文件被。命令中lobs to
后面指定特别目标数据保存在什么路径下(注意,该路线必须优先都存在,否则会报错),lobfile
后面指定特别目标数据保存于啊文件被,不要指定扩展名,DB2会根据数据量自动追加.001、.002等扩大名,同时不要忘记加上modified
by lobsinfile子句子。 
例五:把导出信息保存于消息文件中。 
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文件中(无论是成功、警告或者失败信息),这样,管理员可以通过观察信息文件找到问题所在。 
例六:给导出数据列重命名。 
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格式文件中行之有效,在文件文件中莫克下。
多少的导入
例七:把C盘根目录下之org.txt文件被的多少导入到org表中
import from c:\org.txt of del insert into org

入命令和导出命令的格式基本上处在对应的涉及,import对应export,from对应to,文件名和文件格式代表的义相同,但是导入命令支持
ASC格式的文本,而导出命令不支持。另外,在导出命令的最终是一个SQL语句,用于选择而导出的数量,而导入命令最后不是SQL语句,而是插入数据的方
式以及目标表名称。
例八:从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方法,下面会讲述。
例九:利用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
该令于文本中挑选三排列导入到表中,顺序可以免依照文件被老的排的顺序。replace_create方式的描述见下。
插入方式有:
INSERT 方式——在说明中存活数量的功底之上追加新的数目。
INSERT_UPDATE
方式——这种方式只能用来产生主键的发明,如果插入的数据和原来数据主键不冲突,则直接插入,如果主键冲突,则据此新的数码代表本来数据。
REPLACE 方式——先拿表中现有的数量还去,然后朝空表中插数据。
REPLACE_CREATE
方式——表示要表在,则先行把表中的数都去,然后向空表中插数据;如果表不有,则优先冲文件中之字段创建表,然后重新朝着表中插数据。这种办法只能将IXF格式的文书被的数目插入到表中。
例十:利用p方法导入数据
import from d:\org.ixf of ixf method p(4,5,2) replace into orgtest
欠例子执行之效用与例九类似,只是将n方法换成了p方法,p方法后面的列表中指明列的序号即可,不待指明列名。另外,此例中利用了replace方式插入数据,这会管表中现有的数码还去,然后朝空表中插入数据。
例十一:关于空值的导入
对此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=# 子句子表示于文书被第五独字段如果碰到 #
号,则代表为空值。
虽说这些吧,抛砖引玉,希望大家补充,下同样糟糕讲话一叙Load命令。 
装入(Load)
盛命令格式和导入类似,命令关键字是Load,但是后面的参数比导入命令多的大都,详细用法可以活动参考DB2文档。
盛与导入类似,都是以输入文件被之数移入到目标表中,二者的不同点将以实例中逐年解释。
以盛事先,目标表须就是。
装入的属性于导入高,原因在背后结合实例详细说明。
盛操作不记录到日志被,所以不能够利用日志文件进行前滚操作。
装分为4独号:

  1. 盛阶段
    每当这个路有两项事:数据存储在表中,收集索引键并排序。在盛时,DBA可以指定多长时间生成一致点。
    她是装工具的检查点。如果装入在尽中为从断,它可以打最后一个一致点处起持续更履行。
  2. 构建等
    当构建等,基于在装阶段收集之索引键信息创建索引。如果在构建等有误,装入工具就是再也开,它以起构建等开始处于又开构建。
    3.
    以去等,所有违反唯一要主键约束之行都被剔除并拷贝到一个充分表(如果当讲话中指定相应选项)中。当输入行让拒,消息文件中即成形消息。
  3. 目拷贝阶段
    一旦当装操作中也索引创建指定了系统临时表空间,并且选择了 READ ACCESS
    选项,该索引数据将起系统临时表空间拷贝到本的表空间。
    装过程的备四只级次都是操作的一模一样组成部分,只有当拥有的季单级次都得以后,该装操作才算是完。在每个阶段都以扭转消息,一旦中的某阶段来错误,这些信可以拉DBA分析并解决问题。
    导入操作每次插入一行数时犹如检查是否满足约束原则,并且记入日志文件中。
    下面我们看有的LOAD命令特有的效力,IMPORT命令也克举行的便不再详细说了。
    例十二:从光标类型文件被展开装入
    概念一个cursor
    declare mycur cursor for select * from org
    创建一个新表,结构以及cursor相容
    create table org2 like org
    从cursor中装入
    load from mycur of cursor insert into org2
    除此之外可自cursor中盛,还可打文本、管道、设备遭遇开展装入。而导入命令只能打文本被导入。
    例十三:关于大表
    由用户定义的深表得用来存储不遵循唯一约束与主码约束之推行。如果装入的时刻从不点名特别表,则违背唯一约束之且被扔并且将不再来机遇恢复或改。
    为此SAMPLE数据库中之STAFF表做试验
  4. 缔造一个构造及STAFF表相同的表STAFF1
    CREATE TABLE STAFF1 LIKE STAFF
  5. 把STAFF表中的均等有些数据插入到STAFF1中
    INSERT INTO STAFF1 SELECT * FROM STAFF WHERE ID<=160
  6. 再次创一个结构和STAFF1相同之表STAFFEXP,作为特别表
    CREATE TABLE STAFFEXP LIKE STAFF1
    4.
    吃该特别表上加同排列,因为生表及常见表相比,前面的结构都一模一样,就是最终大多来一致列或零星排列(列名任意),第一排是时戳类型,记录非常记录插入的时,第二排列是好文本类(至少也32K轻重),保存导致该修记下为拒的特定约束信息。本例中只是上加一个时戳列。
    ALTER TABLE STAFFEXP ADD COLUMN TIME TIMESTAMP
  7. 呢STAFF1表创建一个唯一索引
    CREATE UNIQUE INDEX IDXSTAFF ON STAFF1(ID)
  8. 先运行导出命令做出一个文件文件
    EXPORT TO D:\STAFF.TXT OF DEL SELECT * FROM STAFF
  9. 接下来运行装入命令将数据再度装到STAFF1表中
    LOAD FROM D:\STAFF.TXT OF DEL INSERT INTO STAFF1 FOR EXCEPTION
    STAFFEXP
    由于表STAFF1中来唯一索引,所以会发出部分数量因背这约束原则一旦不可知插入到STAFF1表中,这些记录就见面插入到充分表STAFFEXP中。
    专注一点,异常表要团结先定义好,装入命令不能够自动生成大表,如果搜索不交指定的不可开交表,就会见报错。
    例十四:关于DUMP文件
    格式不得法的行会被驳回。通过点名DUMPFILE文件类型修饰符可以假设这些为拒的笔录单独在指定的文书里。
    故而SAMPLE数据库被之STAFF表做尝试
  10. 创造一个构造与STAFF表相同的表STAFF1
    CREATE TABLE STAFF1 LIKE STAFF
  11. 拿STAFF表中的相同部分数据插入到STAFF1中
    INSERT INTO STAFF1 SELECT * FROM STAFF WHERE ID<=160
  12. 再次创一个布局和STAFF1相同的表STAFFEXP,作为十分表
    CREATE TABLE STAFFEXP LIKE STAFF1
  13. 受该生表上加同列
    ALTER TABLE STAFFEXP ADD COLUMN TIME TIMESTAMP
  14. 为STAFF1表创建一个唯一索引
    CREATE UNIQUE INDEX IDXSTAFF ON STAFF1(ID)
  15. 先期运行导出命令做出一个文件文件
    EXPORT TO D:\STAFF.TXT OF DEL SELECT * FROM STAFF
    到D盘上开辟STAFF.TXT文件,把第一排等于320底行替换为:”abcf”,”aaa”,”sdfg”
  16. 然后运行装入命令将数量还装到STAFF1表中
    LOAD FROM D:\STAFF.TXT OF DEL MODIFIED BY DUMPFILE=d:\dump INSERT INTO
    STAFF1 FOR EXCEPTION STAFFEXP
    装入的结果报告着见面时有发生如下一长:
    SQL3118W  在行 “32” 列 “1” 中之许段值不克转换为 SMALLINT
    值,但是对象列不可为空。未装入该行。
    SQL3185W  当处理输入文件之第 “32” 行中的数额时发出原先底不当。
    打开D盘的dump.000文件,会看到造成很的那么一行数:”abcf”,”aaa”,”sdfg”
    由此之事例,我们可以理解,如果一行数的格式不得法,在装的下会惨遭拒绝,该行记录会放到DUMP文件被;而如数据格式正确,但是不满足表的束缚原则,该行记录会放到异常表中。
    例十五:限制装入行数
    故ROWCOUNT选项好指定由文本开始处于装入的记录数
    LOAD FROM D:\STAFF.TXT OF DEL ROWCOUNT 3 INSERT INTO STAFF1
    例十六:出现警示信息时强令装入操作失败
    于好几情况下,文件中之数量必须不折不扣得逞输入到目标表中才好不容易成,即使有一样久记下出错也杀。在这种场面下,可以下WARNINGCOUNT选项。
    交D盘上开辟STAFF.TXT文件,把第一排等于320之行替换为:”abcf”,”aaa”,”sdfg”
    LOAD FROM D:\STAFF.TXT OF DEL WARNINGCOUNT 1 INSERT INTO STAFF1
    运作结果包含下面的警示:
    SQL3118W  在行 “32” 列 “1” 中的许段值未克转换为
    SMALLINT值,但是对象列不可也空。未装入该行。
    SQL3185W  当处理输入文件之第 “32” 行中之数码经常生原先的一无是处。
    SQL3502N  实用程序遇到了 “1” 个警告,它过了许的极度深警告数。
    这会儿无法对表STAFF1进行操作,例如
    SELECT * FROM STAFF1
    会返回:
    ID     NAME      DEPT   JOB   YEARS  SALARY    COMM

SQL0668N  由于表 “USER.STAFF1” 上之故代码 “3”,所以未容许操作。
SQLSTATE=57016
由来是:表处于“装入挂于”状态。对此表的先之 LOAD
尝试失败。在重启航或停 LOAD 操作前未允对表进行存取。
解决方法吗:通过独家发生带有 RESTART 或 TERMINATER 选项的 LOAD
来又起动或已先前惜败的针对性此表的 LOAD 操作。
涵盖TERMINATER的LOAD命令可以歇装入进程,使目标表恢复正常可用状态:
LOAD FROM D:\STAFF.TXT OF DEL TERMINATE INTO STAFF1
带有RESTART的LOAD命令可以于自文件修改对的当儿下,使装入进程又开:
LOAD FROM D:\STAFF.TXT OF DEL RESTART INTO STAFF1
例十七:防止产生警告信息
使NOROWWARNINGS文件类型修饰符可以禁止产生警告信息,当装入过程可能出现大量警戒信息,而用户指向这而不感兴趣的时刻,可以下该选项,这样可大大提高装入的效率
至D盘上开拓STAFF.TXT文件,把第一列等于320底行替换为:”abcf”,”aaa”,”sdfg”
LOAD FROM D:\STAFF.TXT OF DEL MODIFIED BY NOROWWARNINGS INSERT INTO
STAFF1
运作了的结果遭到,第32行弄错,该行无法装入,但是非产生警告信息。
例十八:生成统计数据
动STATISTICS选项可以当装的过程遭到生成统计数据,这些统计数据可以供应优化器确定最得力之履SQL语句的法。
可对表和目录产生不同详细程度的统计数据:
① 对表和目录产生无限详尽的统计数据:
LOAD FROM D:\STAFF.TXT OF DEL REPLACE INTO STAFF1 STATISTICS YES WITH
DISTRIBUTION AND DETAILED INDEXES ALL
② 对表和目录都起简略的统计:
LOAD FROM D:\STAFF.TXT OF DEL REPLACE INTO STAFF1 STATISTICS YES AND
INDEXES ALL
外组合得参考DB2文档。
专注:STATISTICS选项只能和REPLACE兼容,与INSERT选项无般配。
除此以外,通过STATISTICS选项做得了统计,我们看不到任何直接的结果,如果想翻该结果,需要交系统阐明中温馨查询。
例十九:解除检查挂于状态

  1. 连续至SAMPLE数据库及:
    Connect to sample
  2. 创建一个组织及staff表相同之发明:
    CREATE TABLE STAFF1 LIKE STAFF
  3. 让该表添加一个检查约:
    alter table staff1 add constraint chk check(dept<100)
    4.
    到D盘上打开STAFF.TXT文件,把最终一行数的老三排改吗150,这样该条数据就非饱第3步加上的反省约
    律条件了,然后用Load命令于文本中盛数据及staff1表中:
    LOAD FROM D:\STAFF.TXT OF DEL INSERT INTO STAFF1
  4. 这会儿运行查询命令:
    Select * from staff1
    见面拿走错误信息:
    SQL0668N  由于表 “USER.STAFF1” 上之来由代码 “1”,所以未同意操作。
    SQLSTATE=57016
    由是装时产生多少违反了检查约,造成表处于检查挂于状态。
  5. 解除表的自我批评挂于状态,使用:
    set integrity for staff1 check immediate unchecked
    重新运行查询命令:
    Select * from staff1
    发觉说明可以正常使用了,其中的背检查规则之数额吧存在。
    规章二十:性能因素
    每当
    从文本为表导入数据的时候,当数据量特别深之景下,装入命令会明显体现出优势,原因是她不像导入命令每次插入一行,并且以每行都使反省是不是满足约束修
    件,装入命令于输入文件读来多少构建页,把这些页直接写副数据库,并且在每一行数装入时不判断是否满足约束,另外装入命令不写日记,所有这些因素还导致
    装入的效率超过导入。
    除此以外,装入命令还有一部分摘可以决定性能因素:
  6. COPY YES/NO和Nonrecoverable

    Nonrecoverable(不可恢复的):指定装入操作不可恢复,并且不克由连续的前滚操作恢复。前滚操作忽略事务并且标记正在装入数据的表为“无效”。
    ② Copy
    No(默认选项):在这种场面下,如果表所在数据库的存档日志处于启用状态,则装入完成后,表所在的表空间将处于备份挂于状态,直到数据库或说明空间备份完
    毕,该表空间才成可写表空间。原因是装操作造成的别没有吃记录,所以只要恢复装入操作完后发生的故障,备份数据库或说明空间是必需之。
    ③ Copy
    Yes:在这种状况下,如果数据库的存档日志启用,装入操作的更动将给保存到磁带、目录或TSM服务器,并且表空间将不再处于备份挂于状态。
  7. Fastparse
    该公文类修饰符用于减少多少检查次数。它只能用于在数现已掌握不易的状下,尤其适用于DEL和ASC类型的文书。
  8. Anyorder
    一经SAVECOUNT选项无下,该参数允许非按照输入文件中的数目顺序进行装入,在SMP(对如多处理机)系统上CPU_PARALLELISM选项大于1的时候,该参数会增强装入的习性。
  9. Data Buffer
    拖欠参数用于指定由仓库分配得到的4K大大小小的内存页面的数码,作为装入的中间缓冲区,指定一个大缓冲区有助于提高装入的习性。
  10. CPU_PARALLELISM
    拖欠选择只能用来SMP系统及,可以指示以多少进程或线程解析、转换、格式化数据。
  11. Disk_Parallelism
    欠选择指定写多少到磁盘的历程要线程的数码。

相关文章