1、DB2 数据库DB2 数据导入导出 V1.01 / 10DB2 数据导入导出2012 年 3 月 12 日编辑:徐彦一、环境操作系统:Redhat Linux AS 5.5(2.6.18-128.el5PAE #1 SMP i686 i386 GNU/Linux)数据库版本:DB2 WorkGroup 版 V9.7.0(数据库版本可通过连接数据库来查看,db2 connect to dbname)二、声明 实例用户,默认为 db2inst1 Das 用户,默认为 dasusr1 数据库安装目录($INSTHOME) ,默认为/opt/ibm/db2/V9.7 实例安装目录($HOME) ,默认
2、为/home/db2inst1/ 实例名:db2inst1 数据库名:三、导出具体步骤3.1 导出对象结构建议单独创建一个数据导出目录,利于导出文件整理的清晰。$ su db2inst1# 切换至 db2inst1 用户DB2 数据库DB2 数据导入导出 V1.02 / 10$ cd /#为导出目录,例如/home/db2inst1/dbdmp(db2inst1 要有相应的读写权限)$ db2 connect to # 连接至数据库$ db2look d -e a l o .sql# 导出数据库对象创建脚本例子:数据库名为 meibof3.2 导出数据库数据(建议在目录下另建 db2move
3、的目录用来存放导出数据,因为 db2move 命令会产生若干文件)db2move export(如果导出是发现有 warning,在上面的命名后面加上 -aw 参数)以数据库名为 meibof 为例:DB2 数据库DB2 数据导入导出 V1.03 / 10四、导入具体步骤4.1 建立新数据库$ su db2inst1# 切换至 db2inst1 用户db2 create db (建议使用 db2cc 工具来进行创建数据库)创建名为 meibof 的数据库:4.2 执行 .sql 脚本创建数据库切换到放置.sql 的目录db2 tvf .sql(单次导入有可能丢失数据结构,建议连续执行 3 次,
4、导入完成后,和开发人员确认数据库对象的数量,尤其是存储过程。 )4.3 导入数据切换到放置 db2move 导出数据的目录db2move loadDB2 数据库DB2 数据导入导出 V1.04 / 104.4 一致性检查原理:如果发现有表存在检查挂起状态(由于检查约束的原因),则输入命令如下db2 set integrity for schema.tablename immediate checked 将其转换成正常状态。首先利用 sql 语句得到要检查的表的执行语句主要命令:db2 “select db2 set integrity for .|TABNAME| immediate chec
5、ked from syscat.tables where TABSCHEMA= and STATUS=C“以数据库名 meibof,SCHEMA 名 meibof 为例:DB2 数据库DB2 数据导入导出 V1.05 / 10查出有 14 张表需要转换成正常状态。在上一条语句末加上 filename.sh 把要添加的 sql 语句添加到脚本文件如下例:用 vi 文本编辑器打开脚本文件:1)在第一行加入连接数据库 sql 语句;2)在最后一行加入 commit 命令,db2 commitDB2 数据库DB2 数据导入导出 V1.06 / 10执行完后再次检查发现没有需要更正的:说明:如果还有需要
6、更正的表,则反复执行上述操作。五、附录5.1db2look 用法db2look 版本 8.2db2look:生成 DDL 以便重新创建在数据库中定义的对象语法: db2look -d DBname -e -u Creator -z Schema -t Tname1 Tname2.TnameN -tw Tname -h -o Fname -a-m -c -r -l -x -xd -f -fd -td x -noview -i userID -w password-v Vname1 Vname2 . VnameN-wrapper WrapperName -server ServerName -no
7、fed db2look -d DBname -u Creator -s -g -a -t Tname1 Tname2.TnameN-p -o Fname -i userID -w passworddb2look -h -d: 数据库名称:这必须指定 -e: 抽取复制数据库所需要的 DDL 文件此选项将生成包含 DDL 语句的脚本可以对另一个数据库运行此脚本以便重新创建数据库对象此选项可以和 -m 选项一起使用-u: 创建程序标识:若 -u 和 -a 都未指定,则将使用 $USER如果指定了 -a 选项,则将忽略 -u 选项-z: 模式名:如果同时指定了 -z 和 -a,则将忽略 -z联合部分的
8、模式名被忽略-t: 生成指定表的统计信息可以指定的表的数目最多为 30-tw: 为名称与表名的模式条件(通配符)相匹配的表生成 DDLDB2 数据库DB2 数据导入导出 V1.07 / 10当指定了 -tw 选项时,-t 选项会被忽略-v: 只为视图生成 DDL,当指定了 -t 时将忽略此选项-h: 更详细的帮助消息-o: 将输出重定向到给定的文件名如果未指定 -o 选项,则输出将转到 stdout-a: 为所有创建程序生成统计信息如果指定了此选项,则将忽略 -u 选项-m: 在模拟方式下运行 db2look 实用程序此选项将生成包含 SQL UPDATE 语句的脚本这些 SQL UPDATE
9、 语句捕获所有统计信息可以对另一个数据库运行此脚本以便复制初始的那一个当指定了 -m 选项时,将忽略 -p、-g 和 -s 选项-c: 不要生成模拟的 COMMIT 语句除非指定了 -m 或 -e,否则将忽略此选项将不生成 CONNECT 和 CONNECT RESET 语句省略了 COMMIT。在执行脚本之后,需要显式地进行落实。-r: 不要生成模拟的 RUNSTATS 语句缺省值为 RUNSTATS。仅当指定了 -m 时,此选项才有效-l: 生成数据库布局:数据库分区组、缓冲池和表空间。-x: 如果指定了此选项,则 db2look 实用程序将生成授权 DDL对于现有已授权特权,不包括对象的
10、原始定义器-xd: 如果指定了此选项,则 db2look 实用程序将生成授权 DDL对于现有已授权特权,包括对象的原始定义器-f: 抽取配置参数和环境变量如果指定此选项,将忽略 -wrapper 和 -server 选项-fd: 为 opt_buffpage 和 opt_sortheap 以及其它配置和环境参数生成 db2fopt 语句。-td: 将 x 指定为语句定界符(缺省定界符为分号(;)应该与 -e 选项一起使用(如果触发器或者 SQL 例程存在的话)-p: 使用明文格式-s: 生成 postscript 文件此选项将为您生成 postscript 文件当设置了此选项时,将除去所有 l
11、atex 和 tmp ps 文件所需的(非 IBM)软件:LaTeX 和 dvips注意:文件 psfig.tex 必须在 LaTeX 输入路径中-g: 使用图形来显示索引的页访存对必须安装 Gnuplot,并且 必须在您的 LaTeX 输入路径中还将随 LaTeX 文件一起生成 文件-i: 登录到数据库驻留的服务器时所使用的用户标识-w: 登录到数据库驻留的服务器时所使用的密码-noview: 不要生成 CREATE VIEW ddl 语句-wrapper: 为适用于此包装器的联合对象生成 DDL生成的对象可能包含下列各项:包装器、服务器、用户映射、昵称、类型映射、DB2 数据库DB2 数据
12、导入导出 V1.08 / 10函数模板、函数映射和索引规范-server: 为适用于此服务器的联合对象生成 DDL生成的对象可能包含下列各项:包装器、服务器、用户映射、昵称、类型映射、函数模板、函数映射和索引规范-nofed: 不要生成 Federated DDL如果指定此选项,将忽略 -wrapper 和 -server 选项 LaTeX 排版: latex filename.tex 以获得 filename.dvi 示例: db2look -d DEPARTMENT -u walid -e -o db2look.sql - 这将生成由用户 WALID 创建的所有表和联合对象的 DDL 语句
13、- db2look 输出被发送到名为 db2look.sql 的文件中 示例: db2look -d DEPARTMENT -z myscm1 -e -o db2look.sql - 这将为模式名为 MYSCM1 的所有表生成 DDL 语句- 还将生成 $USER 创建的所有联合对象的 DDL。- db2look 输出被发送到名为 db2look.sql 的文件中 示例: db2look -d DEPARTMENT -u walid -m -o db2look.sql - 这将生成 UPDATE 语句以捕获关于用户 WALID 创建的表昵称的统计信息- db2look 输出被发送到名为 db2
14、look.sql 的文件中 示例: db2look -d DEPARTMENT -u walid -e -wrapper W1 -o db2look.sql- 这将生成由用户 WALID 创建的所有表的 DDL 语句- 还将生成适用于包装器 W1 的用户 WALID 所创建所有联合对象的 DDL- db2look 输出被发送到名为 db2look.sql 的文件中 示例: db2look -d DEPARTMENT -u walid -e -server S1 -o db2look.sql - 这将生成由用户 WALID 创建的所有表的 DDL 语句- 还将生成适用于服务器 S1 的用户 WA
15、LID 所创建所有联合对象的 DDL- db2look 输出被发送到名为 db2look.sql 的文件中5.2db2move 用法db2move 首先,您必须指定数据库名(想要移动的表所在的数据库)和要执行的操作(export 和 import 或 load)。然后指定一个选项来定义操作的范围。例如,可以将一个操作限制DB2 数据库DB2 数据导入导出 V1.09 / 10在特定的表(-tn)、表空间( -ts)、表创建者(-tc)或模式名(-sn)范围内。指定表、表空间或表的创建者的一个子集只对 export 操作有效。如果指定多个值,就必须使用逗号将其分隔开;在值列表项之间不允许有空格。
16、可以指定的项最多为 10 个。Export 同时会导出建表命令! 另外,也可以指定 -tf 选项,此时要使用一个文件名作为参数,其中列出了要导出的表名;在该文件中,每行只能列出一个完整的表名。您还可以指定以下内容:-io import-option指定 DB2 的 import 工具可以运行的一种模式。有效的选项有: CREATE、 INSERT、 INSERT_UPDATE、 REPLACE 和 REPLACE_CREATE。缺省值为 REPLACE_CREATE。有关这些模式的更多内容,请参阅 DB2 的产品文档,可以从 DB2 技术支持获得这些文档。-lo load-option指定 D
17、B2 的 load 工具可以运行的一种模式。有效的选项有:INSERT 和 REPLACE。缺省值为 INSERT。 有关这些模式的更多内容,请参阅 DB2 的产品文档,可以从 DB2 技术支持获得这些文档。-l lobpaths指定要创建或查找的 LOB 文件的位置。必须指定一个或多个绝对路径名。如果指定了多个绝对路径,就必须使用逗号将其分隔开;值之间不允许有空格。缺省值是当前目录。-u userid指定一个用户 ID,该工具可以使用这个用户 ID 登录到远程系统上。-p password指定对该用户进行认证的密码;该工具需要使用一个有效的用户 ID 和密码登录到远程系统上。db2move
18、是 DB2 数据转移命令 ,用于不同操作系统之间( 如 linux 和 windows)的数据转移.可以先用 db2move export 将数据导出, 然后在另一个 DB2 里用 db2move import 或db2move load 导入数据.导出方法:建立一个空文件夹,进入该文件夹使用db2move Mydatabase export 导出数据.导入方法:DB2 数据库DB2 数据导入导出 V1.010 / 10进入导出的文件夹,输入命令 db2move Newdb load 实际操作中,使用 load 的时候可能会发生破坏表完整性约束的情况,需要执行 set integrity for immediate checked 消除表 check pending 的状态。不过有些不理想的地方,db2move 时系统虽然会自动建表,但是也仅限于表,表上的视图和索引还需要自行创建)所以需要在导完数据后,用脚本创建索引和视图,以及授权等操作。这样可以防止破坏表的完整性。