This article mainly describes the IBM DB2 data replication and migration methods. The following methods have been tested in the Environment IBM x346, 3.2G × 2, 4G, RAID 1, in 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: Sample Code for generating an import script:
/**
* 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.systables where creator = '" + creator + "' and type='T'";
- try {
- dbBase.executeQuery(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
- TAG: IBM ibm