将SAMPLE database的数据移到MYDB1 database上
来源:互联网 发布:java没有jre 编辑:程序博客网 时间:2024/05/18 02:32
本文著作权属于我之前的同事 - 罗建峰,非常感谢他之前给我写的这封技术流邮件。 特此整理如下。
---------------------------------------------------------------------------我是可爱的分割线---------------------------------------------------------------------------------------------------------------------
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 "."DEPARTMENT"ALTER TABLE "TEST "."DEPARTMENT" ADD CONSTRAINT "PK_DEPARTMENT" PRIMARY KEY("DEPTNO");-- 表上的索引的 DDL 语句 "TEST "."DEPARTMENT"CREATE INDEX "TEST "."XDEPT2" ON "TEST "."DEPARTMENT" ("MGRNO" ASC)COMPRESS NO ALLOW REVERSE SCANS;-- 表上的索引的 DDL 语句 "TEST "."DEPARTMENT"CREATE INDEX "TEST "."XDEPT3" ON "TEST "."DEPARTMENT" ("ADMRDEPT" ASC)COMPRESS NO ALLOW REVERSE SCANS;-- 基于表的别名的 DDL 语句 "TEST "."DEPARTMENT"CREATE ALIAS "TEST "."DEPT" FOR TABLE "TEST "."DEPARTMENT";-------------------------------------------------- 表的 DDL 语句 "TEST "."ACT"------------------------------------------------ CREATE TABLE "TEST "."ACT" ( "ACTNO" SMALLINT NOT NULL , "ACTKWD" CHAR(6) NOT NULL , "ACTDESC" VARCHAR(20) NOT NULL ) IN "USERSPACE1" ; -- 表上主键的 DDL 语句 "TEST "."ACT"ALTER TABLE "TEST "."ACT" ADD CONSTRAINT "PK_ACT" PRIMARY KEY("ACTNO");-- 表上的索引的 DDL 语句 "TEST "."ACT"CREATE UNIQUE INDEX "TEST "."XACT2" ON "TEST "."ACT" ("ACTNO" ASC, "ACTKWD" ASC)COMPRESS NO ALLOW REVERSE SCANS;-------------------------------------------------- 表的 DDL 语句 "TEST "."ADEFUSR"------------------------------------------------ SET CURRENT SCHEMA = "TEST ";SET CURRENT PATH = "SYSIBM","SYSFUN","SYSPROC","SYSIBMADM","TEST";CREATE SUMMARY TABLE ADEFUSR AS (SELECT workdept, count(*) AS no_of_employees FROM employee GROUP BY workdept) DATA INITIALLY DEFERRED REFRESH IMMEDIATE ENABLE QUERY OPTIMIZATION MAINTAINED BY SYSTEM IN "USERSPACE1" ;ALTER TABLE "TEST "."ADEFUSR" DEACTIVATE ROW ACCESS CONTROL;-------------------------------------------------- 表的 DDL 语句 "TEST "."CUSTOMER"------------------------------------------------ CREATE TABLE "TEST "."CUSTOMER" ( "CID" BIGINT NOT NULL , "INFO" XML , "HISTORY" XML ) IN "IBMDB2SAMPLEXML" ; -- 表上主键的 DDL 语句 "TEST "."CUSTOMER"ALTER TABLE "TEST "."CUSTOMER" ADD CONSTRAINT "PK_CUSTOMER" PRIMARY KEY("CID");-- 表上的索引的 DDL 语句 "TEST "."CUSTOMER"CREATE UNIQUE INDEX "TEST "."CUST_CID_XMLIDX" ON "TEST "."CUSTOMER" ("INFO" ASC)GENERATE KEY USING XMLPATTERN '/customerinfo/@Cid' AS SQL DOUBLE IGNORE INVALID VALUES COMPRESS NO ALLOW REVERSE SCANS;-- 表上的索引的 DDL 语句 "TEST "."CUSTOMER"CREATE INDEX "TEST "."CUST_NAME_XMLIDX" ON "TEST "."CUSTOMER" ("INFO" ASC)GENERATE KEY USING XMLPATTERN '/customerinfo/name' AS SQL VARCHAR ( 50 ) IGNORE INVALID VALUES COMPRESS NO ALLOW REVERSE SCANS;-- 表上的索引的 DDL 语句 "TEST "."CUSTOMER"CREATE INDEX "TEST "."CUST_PHONES_XMLIDX" ON "TEST "."CUSTOMER" ("INFO" ASC)GENERATE KEY USING XMLPATTERN '/customerinfo/phone' AS SQL VARCHAR ( 25 ) IGNORE INVALID VALUES COMPRESS NO ALLOW REVERSE SCANS;-- 表上的索引的 DDL 语句 "TEST "."CUSTOMER"CREATE INDEX "TEST "."CUST_PHONET_XMLIDX" ON "TEST "."CUSTOMER" ("INFO" ASC)GENERATE KEY USING XMLPATTERN '/customerinfo/phone/@type' AS SQL VARCHAR ( 25 ) IGNORE INVALID VALUES COMPRESS NO ALLOW REVERSE SCANS;-------------------------------------------------- 表的 DDL 语句 "TEST "."CATALOG"------------------------------------------------ CREATE TABLE "TEST "."CATALOG" ( "NAME" VARCHAR(128) NOT NULL , "CATLOG" XML ) COMPRESS YES ADAPTIVE IN "IBMDB2SAMPLEXML" ; -- 表上主键的 DDL 语句 "TEST "."CATALOG"ALTER TABLE "TEST "."CATALOG" ADD CONSTRAINT "PK_CATALOG" PRIMARY KEY("NAME");-- 指定的表名不正确 -- 表上的外键的 DDL 语句 "TEST "."DEPARTMENT"ALTER TABLE "TEST "."DEPARTMENT" ADD CONSTRAINT "RDE" FOREIGN KEY("MGRNO")REFERENCES "TEST "."EMPLOYEE"("EMPNO")ON DELETE SET NULLON UPDATE NO ACTIONENFORCEDENABLE QUERY OPTIMIZATION;ALTER TABLE "TEST "."DEPARTMENT" ADD CONSTRAINT "ROD" FOREIGN KEY("ADMRDEPT")REFERENCES "TEST "."DEPARTMENT"("DEPTNO")ON DELETE CASCADEON UPDATE NO ACTIONENFORCEDENABLE QUERY OPTIMIZATION;-- 表上的外键的 DDL 语句 "TEST "."ACT"ALTER TABLE "TEST "."ACT" ADD CONSTRAINT "RPAA" FOREIGN KEY("ACTNO")REFERENCES "TEST "."ACT"("ACTNO")ON DELETE RESTRICTON UPDATE NO ACTIONENFORCEDENABLE QUERY OPTIMIZATION;------------------------------ 视图的 DDL 语句----------------------------SET CURRENT SCHEMA = "TEST ";SET CURRENT PATH = "SYSIBM","SYSFUN","SYSPROC","SYSIBMADM","TEST";CREATE VIEW VDEPT AS SELECT ALL DEPTNO, DEPTNAME, MGRNO, ADMRDEPT FROM DEPT;SET CURRENT SCHEMA = "TEST ";SET CURRENT PATH = "SYSIBM","SYSFUN","SYSPROC","SYSIBMADM","TEST";CREATE VIEW VHDEPT AS SELECT ALL DEPTNO , DEPTNAME, MGRNO , ADMRDEPT, LOCATION FROM DEPT;SET CURRENT SCHEMA = "TEST ";SET CURRENT PATH = "SYSIBM","SYSFUN","SYSPROC","SYSIBMADM","TEST";CREATE VIEW VEMP AS SELECT ALL EMPNO , FIRSTNME, MIDINIT , LASTNAME, WORKDEPT FROM EMP;SET CURRENT SCHEMA = "TEST ";SET CURRENT PATH = "SYSIBM","SYSFUN","SYSPROC","SYSIBMADM","TEST";CREATE VIEW VACT AS SELECT ALL ACTNO , ACTKWD , ACTDESC FROM ACT;SET CURRENT SCHEMA = "TEST ";SET CURRENT PATH = "SYSIBM","SYSFUN","SYSPROC","SYSIBMADM","TEST";CREATE VIEW VDEPMG1 (DEPTNO, DEPTNAME, MGRNO, FIRSTNME, MIDINIT, LASTNAME,ADMRDEPT) AS SELECT ALL DEPTNO, DEPTNAME, EMPNO, FIRSTNME, MIDINIT, LASTNAME,ADMRDEPT FROM DEPT LEFT OUTER JOIN EMP ON MGRNO = EMPNO;SET CURRENT SCHEMA = "TEST ";SET CURRENT PATH = "SYSIBM","SYSFUN","SYSPROC","SYSIBMADM","TEST";CREATE VIEW VEMPDPT1 (DEPTNO, DEPTNAME, EMPNO, FRSTINIT, MIDINIT, LASTNAME,WORKDEPT) AS SELECT ALL DEPTNO, DEPTNAME, EMPNO, SUBSTR(FIRSTNME, 1, 1),MIDINIT, LASTNAME, WORKDEPT FROM DEPT RIGHT OUTER JOIN EMP ON WORKDEPT= DEPTNO;SET CURRENT SCHEMA = "TEST ";SET CURRENT PATH = "SYSIBM","SYSFUN","SYSPROC","SYSIBMADM","TEST";CREATE VIEW VASTRDE2 (DEPT1NO,DEPT1NAM,EMP1NO,EMP1FN,EMP1MI,EMP1LN,TYPE2, DEPT2NO,DEPT2NAM,EMP2NO,EMP2FN,EMP2MI,EMP2LN) AS SELECT ALL D1.DEPTNO,D1.DEPTNAME,D1.MGRNO,D1.FIRSTNME,D1.MIDINIT, D1.LASTNAME,'2', D1.DEPTNO,D1.DEPTNAME,E2.EMPNO,E2.FIRSTNME,E2.MIDINIT, E2.LASTNAME FROM VDEPMG1 D1, EMP E2 WHERE D1.DEPTNO = E2.WORKDEPT;SET CURRENT SCHEMA = "TEST ";SET CURRENT PATH = "SYSIBM","SYSFUN","SYSPROC","SYSIBMADM","TEST";CREATE VIEW VPROJRE1 (PROJNO,PROJNAME,PROJDEP,RESPEMP,FIRSTNME,MIDINIT, LASTNAME,MAJPROJ) AS SELECT ALL PROJNO,PROJNAME,DEPTNO,EMPNO,FIRSTNME,MIDINIT, LASTNAME,MAJPROJ FROM PROJ, EMP WHERE RESPEMP = EMPNO;SET CURRENT SCHEMA = "TEST ";SET CURRENT PATH = "SYSIBM","SYSFUN","SYSPROC","SYSIBMADM","TEST";CREATE VIEW VSTAFAC1(PROJNO, ACTNO, ACTDESC, EMPNO, FIRSTNME, MIDINIT, LASTNAME, EMPTIME,STDATE,ENDATE, TYPE) AS SELECT ALL PA.PROJNO, PA.ACTNO,AC.ACTDESC,' ', ' ', ' ', ' ', PA.ACSTAFF, PA.ACSTDATE, PA.ACENDATE,'1'FROM PROJACT PA, ACT AC WHERE PA.ACTNO = AC.ACTNO;SET CURRENT SCHEMA = "TEST ";SET CURRENT PATH = "SYSIBM","SYSFUN","SYSPROC","SYSIBMADM","TEST";CREATE VIEW VSTAFAC2 (PROJNO, ACTNO, ACTDESC, EMPNO, FIRSTNME, MIDINIT,LASTNAME, EMPTIME,STDATE, ENDATE, TYPE) AS SELECT ALL EP.PROJNO, EP.ACTNO,AC.ACTDESC, EP.EMPNO,EM.FIRSTNME, EM.MIDINIT, EM.LASTNAME, EP.EMPTIME,EP.EMSTDATE, EP.EMENDATE,'2' FROM EMPPROJACT EP, ACT AC, EMP EM WHEREEP.ACTNO = AC.ACTNO AND EP.EMPNO = EM.EMPNO;SET CURRENT SCHEMA = "TEST ";SET CURRENT PATH = "SYSIBM","SYSFUN","SYSPROC","SYSIBMADM","TEST";CREATE VIEW VPHONE (LASTNAME, FIRSTNAME, MIDDLEINITIAL, PHONENUMBER, EMPLOYEENUMBER, DEPTNUMBER, DEPTNAME) AS SELECT ALL LASTNAME, FIRSTNME, MIDINIT , VALUE(PHONENO,' '), EMPNO, DEPTNO, DEPTNAME FROM EMP,DEPT WHERE WORKDEPT = DEPTNO;SET CURRENT SCHEMA = "TEST ";SET CURRENT PATH = "SYSIBM","SYSFUN","SYSPROC","SYSIBMADM","TEST";CREATE VIEW VEMPLP (EMPLOYEENUMBER, PHONENUMBER) AS SELECT ALL EMPNO, PHONENO FROM EMP;COMMIT WORK;CONNECT RESET;TERMINATE;
3. 改好了sample.sql里面的相关内容后,然后执行sample.sql文件。
命令:db2 -tvf sample.sql
示例截图:
4. 查看MYDB1里面的表格: db2 list tables
MYDB1运行DDL文件后的表格
SAMPLE数据库里的表格(做对比用)
里面有的表格没有创建成功的举个例子,表CUSTOMER没有创建成功是因为下图,这里可能是做DDL备份的时候没有选择一些参数或者没有去创建储存XML数据的tablespace,你自己可以研究一下)
二. 当所有表格都创建好了之后,就把个表格的数据从sample里面导出,然后导入到MYDB1数据库里面。
SAMPLE数据库上面表ACT的数据
MYDB1数据库中表ACT的数据
1. 导出sample数据库中的表ACT数据。
命令:db2 connect to sample
db2 export to act.ixf of ixf select * from ACT
示例
2. 把数据导入到MYDB1中的表ACT中
命令:db2 connect to MYDB1
db2 load from act.ixf of ixf replace into act
示例
Load完后数据库会放置于暂挂状态,这样是不能查看表里面的数据的。当运行SELECT命令时会有这样的错误
这个可能是因为由于有自增的主外键导致的导入错误,所以要用命令db2 SET INTEGRITY FOR act FOREIGN KEY IMMEDIATE UNCHECKED告诉DB2不用检查主外键了的关系,直接导入数据
然后成功后就可以运行select语句检查一下MYDB1中表ACT中的数据
示例里面也说了一些可能遇到的问题以及解决方法。如果你对你电脑上面local的数据库那些关联性主外键,视图之类的不太重视,只重视表中的数据的话,这个用我告诉你的这个方法足够了
- 将SAMPLE database的数据移到MYDB1 database上
- 如何通过PowerShell将一个Site Collection从Default Content Database中转移到其他的Content Database中?
- Existing "SAMPLE" database found...
- mysql employees sample database
- Oracle Database Sample Schemas
- MySQL's Sample Database
- COBOL access Oracle database sample
- MySQL官方测试库Employees Sample Database的介绍
- DataBase
- Database
- database
- Database
- database
- Database
- database
- database
- database
- Database
- Mybatis + SpringMVC事务管理
- codeblocks 设置代码自动补全
- 在Linux Bash通过上下键快速查找历史命令
- 数据库设计三大范式
- Spark问题笔记2
- 将SAMPLE database的数据移到MYDB1 database上
- Checking API: checkapi-last make update-api
- hiho一下 更为复杂的买卖房屋姿势(线段树)
- 欢迎来到“渣渣写博客"
- Tomcat配置HTTPS
- SpringMVC -- @RequestMapping用法
- 华谊兄弟上半年净利增417%
- iOS开发—手动解析CrashLog(一)
- 得到正确的颜色IOS7半透明导航栏