The following articles mainly describe the actual operation solution for DB2 data replication and migration. The following method is tested by professionals in the Environment IBM x346, in 3.2G × 2, 4G, RAID 1, DB2 V8.2.4, Win2000 Adv Server, and DMS tablespaces, the data load speed is about 60-entries/min.
Background:You need to change the tablespace of the database, or migrate data from all tables in the database to a new database.
Steps:
1. Select all tables in the source database through the db2 Console (db2cc) and export them as DDL scripts;
2. Make necessary modifications to the script as needed, such as changing the tablespace to GATHER;
3. Create a database and create a DMS tablespace: GATHER;
4. Run the DDL script in this database;
5. write code to query all tables in the source database and generate an export script automatically;
6. write code to query all tables in the source database and generate an import script automatically;
7. Connect to the source database and execute the export script;
8. connect to the target database and execute the import script;
Appendix 1: Sample Code for generating an export Script :/**
Create an export script
- @ Param conn
- @ Param creator: Table creator
- @ Param filePath
- */
- Public void createExportFile (Connection conn, String creator, String filePath) throws Exception {
- DBBase dbBase = new DBBase (conn );
- String selectTableSql = "select name from sysibm. Variables Ables where creator = '" + creator + "' and type = 'T '";
- Try {
- DbBase.exe cuteQuery (selectTableSql );
- } Catch (Exception ex ){
- Throw ex;
- } Finally {
- DbBase. close ();
- }
- DBResult result = dbBase. getSelectDBResult ();
- List list = new ArrayList ();
- While (result. next ()){
- String table = result. getString (1 );
- List. add (table );
- }
- StringBuffer sb = new StringBuffer ();
- String enterFlag = "\ r \ n ";
- For (int I = 0; I <list. size (); I ++ ){
- String tableName = (String) list. get (I );
- Sb. append ("db2 \" export to aa "+ String. valueOf (I + 1) +". ixf of ixf select from "+ tableName + "\"");
- Sb. append (enterFlag );
- }
- String str = sb. toString ();
- FileUtility. saveStringToFile (filePath, str, false );
- }
Appendix 2: generate the DB2 data copy import script code example :/**
Create a load script
- @ Param conn
- @ Param creator: Table creator
- @ Param filePath
- */
- Public void createLoadFile (Connection conn, String creator, String filePath) throws Exception {
- DBBase dbBase = new DBBase (conn );
- String selectTableSql = "select name from sysibm. Variables Ables where creator = '" + creator + "' and type = 'T '";
- Try {
- DbBase.exe cuteQuery (selectTableSql );
- } Catch (Exception ex ){
- Throw ex;
- } Finally {
- DbBase. close ();
- }
- DBResult result = dbBase. getSelectDBResult ();
- List list = new ArrayList ();
- While (result. next ()){
- String table = result. getString (1 );
- List. add (table );
- }
- StringBuffer sb = new StringBuffer ();
- String enterFlag = "\ r \ n ";
- For (int I = 0; I <list. size (); I ++ ){
- String tableName = (String) list. get (I );
- Sb. append ("db2 \" load from aa "+ String. valueOf (I + 1) + ". ixf of ixf into "+ tableName +" copy no without prompting \"");
- Sb. append (enterFlag );
- }
- String str = sb. toString ();
- FileUtility. saveStringToFile (filePath, str, false );
- }
Appendix 3: export script example db2 connect to testdb user test password test
- db2 "export to aa1.ixf of ixf select from table1"
- db2 "export to aa2.ixf of ixf select from table2"
- db2 connect reset
Appendix 4: import script example db2 connect to testdb user test password test
- db2 "load from aa1.ixf of ixf replace into table1 COPY NO without prompting "
- db2 "load from aa2.ixf of ixf replace into table2 COPY NO without prompting "
- db2 connect reset
The above content is an introduction to the DB2 data replication and migration methods. I hope you will have some gains.