DB2数据库——DB2数据导入导出V1.01/10DB2数据导入导出2012年3月12日编辑:徐彦一、环境操作系统:RedhatLinuxAS5.5(2.6.18-128.el5PAE#1SMPi686i386GNU/Linux)数据库版本:DB2WorkGroup版V9.7.0(数据库版本可通过连接数据库来查看,db2connecttodbname)二、声明实例用户,默认为db2inst1Das用户,默认为dasusr1数据库安装目录($INSTHOME),默认为/opt/ibm/db2/V9.7实例安装目录($HOME),默认为/home/db2inst1/实例名:db2inst1数据库名:dbname三、导出具体步骤3.1导出对象结构建议单独创建一个数据导出目录,利于导出文件整理的清晰。$su–db2inst1#切换至db2inst1用户DB2数据库——DB2数据导入导出V1.02/10$cd/backupdir#backupdir为导出目录,例如/home/db2inst1/dbdmp(db2inst1要有相应的读写权限)$db2connecttodbname#连接至数据库$db2look–ddbname-e–a–l–odbname.sql#导出数据库对象创建脚本例子:数据库名为meibof3.2导出数据库数据(建议在backupdir目录下另建db2move的目录用来存放导出数据,因为db2move命令会产生若干文件)db2movedbnameexport(如果导出是发现有warning,在上面的命名后面加上-aw参数)以数据库名为meibof为例:DB2数据库——DB2数据导入导出V1.03/10四、导入具体步骤4.1建立新数据库$su–db2inst1#切换至db2inst1用户db2createdbdbname(建议使用db2cc工具来进行创建数据库)创建名为meibof的数据库:4.2执行dbname.sql脚本创建数据库切换到放置dbname.sql的目录db2–tvfdbname.sql(单次导入有可能丢失数据结构,建议连续执行3次,导入完成后,和开发人员确认数据库对象的数量,尤其是存储过程。)4.3导入数据切换到放置db2move导出数据的目录db2movedbnameloadDB2数据库——DB2数据导入导出V1.04/104.4一致性检查原理:如果发现有表存在检查挂起状态(由于检查约束的原因),则输入命令如下db2setintegrityforschema.tablenameimmediatechecked将其转换成正常状态。首先利用sql语句得到要检查的表的执行语句主要命令:db2select'db2setintegrityfordbname.'||TABNAME||'immediatechecked'fromsyscat.tableswhereTABSCHEMA='SCHEMA'andSTATUS='C'以数据库名meibof,SCHEMA名meibof为例:DB2数据库——DB2数据导入导出V1.05/10查出有14张表需要转换成正常状态。在上一条语句末加上filename.sh把要添加的sql语句添加到脚本文件如下例:用vi文本编辑器打开脚本文件:1)在第一行加入连接数据库sql语句;2)在最后一行加入commit命令,db2commitDB2数据库——DB2数据导入导出V1.06/10执行完后再次检查发现没有需要更正的:说明:如果还有需要更正的表,则反复执行上述操作。五、附录5.1db2look用法db2look版本8.2db2look:生成DDL以便重新创建在数据库中定义的对象语法:db2look-dDBname[-e][-uCreator][-zSchema][-tTname1Tname2...TnameN][-twTname][-h][-oFname][-a][-m][-c][-r][-l][-x][-xd][-f][-fd][-tdx][-noview][-iuserID][-wpassword][-vVname1Vname2...VnameN][-wrapperWrapperName][-serverServerName][-nofed]db2look-dDBname[-uCreator][-s][-g][-a][-tTname1Tname2...TnameN][-p][-oFname][-iuserID][-wpassword]db2look[-h]-d:数据库名称:这必须指定-e:抽取复制数据库所需要的DDL文件此选项将生成包含DDL语句的脚本可以对另一个数据库运行此脚本以便重新创建数据库对象此选项可以和-m选项一起使用-u:创建程序标识:若-u和-a都未指定,则将使用$USER如果指定了-a选项,则将忽略-u选项-z:模式名:如果同时指定了-z和-a,则将忽略-z联合部分的模式名被忽略-t:生成指定表的统计信息可以指定的表的数目最多为30-tw:为名称与表名的模式条件(通配符)相匹配的表生成DDLDB2数据库——DB2数据导入导出V1.07/10当指定了-tw选项时,-t选项会被忽略-v:只为视图生成DDL,当指定了-t时将忽略此选项-h:更详细的帮助消息-o:将输出重定向到给定的文件名如果未指定-o选项,则输出将转到stdout-a:为所有创建程序生成统计信息如果指定了此选项,则将忽略-u选项-m:在模拟方式下运行db2look实用程序此选项将生成包含SQLUPDATE语句的脚本这些SQLUPDATE语句捕获所有统计信息可以对另一个数据库运行此脚本以便复制初始的那一个当指定了-m选项时,将忽略-p、-g和-s选项-c:不要生成模拟的COMMIT语句除非指定了-m或-e,否则将忽略此选项将不生成CONNECT和CONNECTRESET语句省略了COMMIT。在执行脚本之后,需要显式地进行落实。-r:不要生成模拟的RUNSTATS语句缺省值为RUNSTATS。仅当指定了-m时,此选项才有效-l:生成数据库布局:数据库分区组、缓冲池和表空间。-x:如果指定了此选项,则db2look实用程序将生成授权DDL对于现有已授权特权,不包括对象的原始定义器-xd:如果指定了此选项,则db2look实用程序将生成授权DDL对于现有已授权特权,包括对象的原始定义器-f:抽取配置参数和环境变量如果指定此选项,将忽略-wrapper和-server选项-fd:为opt_buffpage和opt_sortheap以及其它配置和环境参数生成db2fopt语句。-td:将x指定为语句定界符(缺省定界符为分号(;))应该与-e选项一起使用(如果触发器或者SQL例程存在的话)-p:使用明文格式-s:生成postscript文件此选项将为您生成postscript文件当设置了此选项时,将除去所有latex和tmpps文件所需的(非IBM)软件:LaTeX和dvips注意:文件psfig.tex必须在LaTeX输入路径中-g:使用图形来显示索引的页访存对必须安装Gnuplot,并且psfig.tex必须在您的LaTeX输入路径中还将随LaTeX文件一起生成filename.ps文件-i:登录到数据库驻留的服务器时所使用的用户标识-w:登录到数据库驻留的服务器时所使用的密码-noview:不要生成CREATEVIEWddl语句-wrapper:为适用于此包装器的联合对象生成DDL生成的对象可能包含下列各项:包装器、服务器、用户映射、昵称、类型映射、DB2数据库——DB2数据导入导出V1.08/10函数模板、函数映射和索引规范-server:为适用于此服务器的联合对象生成DDL生成的对象可能包含下列各项:包装器、服务器、用户映射、昵称、类型映射、函数模板、函数映射和索引规范-nofed:不要生成FederatedDDL如果指定此选项,将忽略-wrapper和-server选项LaTeX排版:latexfilename.tex以获得filename.dvi示例:db2look-dDEPARTMENT-uwalid-e-odb2look.sql--这将生成由用户WALID创建的所有表和联合对象的DDL语句--db2look输出被发送到名为db2look.sql的文件中示例:db2look-dDEPARTMENT-zmyscm1-e-odb2look.sql--这将为模式名为MYSCM1的所有表生成DDL语句--还将生成$USER创建的所有联合对象的DDL。--db2look输出被发送到名为db2look.sql的文件中示例:db2look-dDEPARTMENT-uwalid-m-odb2look.sql--这将生成UPDATE语句以捕获关于用户WALID创建的表/昵称的统计信息--db2look输出被发送到名为db2look.sql的文件中示例:db2look-dDEPARTMENT-uwalid-e-wrapperW1-odb2look.sql--这将生成由用户WALID创建的所有表的DDL语句--还将生成适用于包装器W1的用户WALID所创建所有联合对象的DDL--db2look输出被发送到名为db2look.sql的文件中示例:db2look-dDEPARTMENT-uwalid-e-serverS1-odb2look.sql--这将生成由用户WALID创建的所有表的DDL语句--还将生成适用于服务器S1的用户WALID所创建所有联合对象的DDL--db2look输出被发送到名为db2look.sql的文件中5.2db2move用法db2movedatabase-nameaction[optionvalue]首先,您必须指定数据库名(想要移动的表所在的数据库)和要执行的操作(export和import或load)。然后指定一个选项来定义操作的范围。例如,DB2数据库——DB2数据导入导出V1.09/10可以将一个操作限制在特定的表(-tn)、表空间(-ts)、表创建者(-tc)或模式名(-sn)范围内。指定表、表空间或表的创建者的一个子集只对export操作有效。如果指定多个值,就必须使用逗号将其分隔开;在值列表项之间不允许有空格。可以指定的项最多为10个。Export同时会导出建表命令!另外,也可以指定-tf选项,此时要使用一个文件名作为参数,其中列出了要导出的表名;在该文件中,每行只能列出一个完整的表名。您还可以指定以下内容:-ioimport-option指定DB2的import工具可以运行的一种模式。有效的选项有:CREATE、INSERT、INSERT_UPDATE、REPLACE和REPLACE_CREATE。缺省值为REPLACE_CREATE。有关这些模式的更多内容,请参阅DB2的产品文档,可以从DB2技术支持获得这些文档。-loload-option指定DB2的load工具可以运行的一种模式。有效的选项有:INSERT和REPLACE。缺省值为INSERT。有关这些模式的更多内容,请参阅DB2的产品文档,可以从DB2技术支持获得这些文档。-llobpaths指定要创建或查找的LOB文件的位置。必须指定一个或多个绝对路径名。如果指定了多个绝对路径,就必须使用逗号将其分隔开;值之间不允许有空格。缺省值是当前目录。-uuserid指定一个用户ID,该工具可以使用这个用户ID登录到远程系统上。-ppassword指定对该用户进行认证的密码;该工具需要使用一个有效的用户ID和密码登录到远程系统上。db2move是DB2数据转移命令,用于不同操作系统之间(如linux和windows)的数据转移.可以先用db2moveexport将数据导出,然后在另一个DB2里用db2moveimport或db2moveload导入数据.导出方法:建立一个空文件夹,进入该文件夹使用db2moveMydat