本文著作权属于我之前的同事 - 罗建峰,非常感谢他之前给我写的这封技术流邮件。 特此整理如下。
---------------------------------------------------------------------------我是可爱的分割线---------------------------------------------------------------------------------------------------------------------
SAMPLE 数据库是安装DB2的时候创建的,里面包括一些表,表空间等等的东西,MYDB1是新建的数据库,是没有任何东西的。SAMPLE是源数据库,MYDB1是目标数据库
一. 复制个表格的表结构,这里是通过备份整个数据库的DDL来实现。
Sample数据库里的表
MYDB1数据库里面的表
1. 创建生成DDL文件
命令:db2look -d <dbname> -e -nofed -o sample.sql (sample.sql是自己取的名字。另外这个可以有很多参数,可以用db2look -h查看各个参数,如果是sever的要加上-i USERID -w PASSWORD) 这个我是猜的。
将<dbname>替换成源数据库的名称,<tableN>替换成具体的表名,多个表之间用空格分开
例子:db2look -d SAMPLE -e -nofed -o sample.sql
运行结果:
2. 我的是window版本的DB2,可能命令和LINUX会有点不同,我刚才遇到一个问题就是找不到生成的DDL文件,要在BIN里面创建一个文件夹DATA,然后cd到DATA里面去输入DB2LOOK的命令,然后sample.sql就在DATA文件夹里面了。
实例截图:
sample.sql里面的内容
-- 此 CLP 文件是使用 DB2LOOK 版本 "10.1" 创建的
-- 时间戳记: 2014/5/30 20:48:08
-- 数据库名称: SAMPLE
-- 数据库管理器版本: DB2/NT64 Version 10.1.0
-- 数据库代码页: 1208
-- 数据库整理顺序为: IDENTITY
--(这里的DDL是链接到SAMPLE数据库上的,所以这里要修改一下链接的数据库,将其改为目标数据库MYDB1,有必要的话还可能要修改tablespace的名字,其实这些DDL就免去了你要创建表一个一个SQL的打,里面的内容按照你自己需求要改一下就可以了,我没有截完所有内容)
CONNECT TO SAMPLE;
------------------------------------------------
-- 表的 DDL 语句 "TEST "."CL_SCHED"
(TEST是我本地数据库的ID名字,你在sever上面导出的DDL可能那个schema会有很多,都将他改为你的ID名字就可以了,然后你就对所有表都有权限了,标红的部分,我因为是本地测试,所以不用改,这个DDL下面有很多内容,我没有复制全给你)
------------------------------------------------
CREATE TABLE "TEST "."CL_SCHED" (
"CLASS_CODE" CHAR(7) ,
"DAY" SMALLINT ,
"STARTING" TIME ,
"ENDING" TIME )
IN "USERSPACE1" ;
------------------------------------------------
-- 表的 DDL 语句 "TEST "."DEPARTMENT"
------------------------------------------------
CREATE TABLE "TEST "."DEPARTMENT" (
"DEPTNO" CHAR(3) NOT NULL ,
"DEPTNAME" VARCHAR(36) NOT NULL ,
"MGRNO" CHAR(6) ,
"ADMRDEPT" CHAR(3) NOT NULL ,
"LOCATION" CHAR(16) )
IN "USERSPACE1" ;
-- 表上主键的 DDL 语句 "TEST "."DEPART