此範例將說明如何擷取 Pointbase 中表格的 DDL,並使用 Netbeans 5.0 在 Java DB 中建立相同的表格。執行此操作的另一個方法是使用指令程式工具和 unload database 指令︰
./startcommander.sh Do you wish to create a new Database. (Yes (Y) or No (N))? [default: N]: Enter product to connect with: (Embedded (E) or Server (S))? [default: E]: e Enter driver to use? [default: [com.pointbase.jdbc.jdbcUniversalDriver]: Enter database URL? [default: [jdbc:pointbase:embedded:sample]: Enter Username? [default: PBPUBLIC]: Enter Password? [default: PBPUBLIC]: PointBase Commander 5.2 ECF build 294 size restricted version EMBEDDED Interactive SQL command language. SunOS/5.9 (C) Copyright 2004 DataMirror Mobile Solutions, Inc. All rights reserved. Licensed to: Sun_customer_demo_use For commercial version contact PointBase at: pointbase.com PHONE: 1-877-238-8798 (US & CANADA) 1-408-961-1100 (International) WEBSITE: www.pointbase.com SQL>unload database sampledb.sql; SQL> unload database sampledb.sql; SQL> 13 Row(s) Unloaded. (PBPUBLIC.CUSTOMER_TBL) SQL> 4 Row(s) Unloaded. (PBPUBLIC.DISCOUNT_CODE_TBL) SQL> 30 Row(s) Unloaded. (PBPUBLIC.MANUFACTURE_TBL) SQL> 11 Row(s) Unloaded. (PBPUBLIC.MICRO_MARKETS_TBL) SQL> 9 Row(s) Unloaded. (PBPUBLIC.OFFICE_TBL) SQL> 4 Row(s) Unloaded. (PBPUBLIC.OFFICE_TYPE_CODE_TBL) SQL> 15 Row(s) Unloaded. (PBPUBLIC.ORDER_TBL) SQL> 6 Row(s) Unloaded. (PBPUBLIC.PRODUCT_CODE_TBL) SQL> 30 Row(s) Unloaded. (PBPUBLIC.PRODUCT_TBL) SQL> 10 Row(s) Unloaded. (PBPUBLIC.SALES_REP_DATA_TBL) SQL> 10 Row(s) Unloaded. (PBPUBLIC.SALES_REP_TBL) SQL> 52 Row(s) Unloaded. (PBPUBLIC.SALES_TAX_CODE_TBL) SQL> 12 Table(s) Unloaded. SQL> quit;
上面範例中,執行 unload database 指令的結果將寫入 sampledb.sql 檔案。sampledb.sql 檔案包含建立必需表格和索引的所有必要 DDL。它還包含將資料插回資料庫的 DML。指令程式指令 RUN 旨在使用產生的程序檔將資料匯入其他 Pointbase 資料庫。以下範例將說明所產生的檔案中的 INSERT 陳述式和相關資料的格式︰
INSERT INTO "ADVENTURE"."CATEGORY" ( "CATID", "LOCALE", "NAME", "DESCRIPTION", "IMAGEURI" ) VALUES( ?, ?, ?, ?, ? ); { 'ISLAND ','en_US','Island Adventures','Experience an island / paradise in a way fit for your needs.','Island_Adventures.gif' 'JUNGLE ','en_US','Jungle Adventures','Experience a jungle / paradise in a way fit for your needs.','Jungle_Adventures.gif' 'MOUNTAIN ','en_US','Mountain Adventures','Experience an / elevated paradise with a view.','Mountain_Adventures.gif' 'ORBITAL ','en_US','Orbital Adventures','Experience a vacuum / paradise with a beautiful view and where no one can hear you scream.', / 'Space_Adventures.gif' 'WESTERN ','en_US','Western Adventures','Enjoy the Wild West. / ','Western_Adventures.gif' 'SOUTH_POLE ','en_US','South Pole Adventures','Experience a / frozen paradise in a way fit for your needs.','SouthPole_Adventures.gif' };
您可以輕鬆編輯指令程式 unload database 指令產生的檔案,以使該檔案僅包含 DDL (例如,可輕鬆撰寫用來處理 insert 陳述式的程式)。我們做個簡單的測試,針對 Pointbase sample 資料庫使用 unload database 指令,然後編輯產生的程序檔,執行以下變更︰
從全部 CREATE Table 陳述式的結尾移除片語 Organization Heap
移除 COMMIT 指令
將布林 datatype 變更為 smallint
移除全部 INSERT 陳述式和相關聯的資料
接下來,使用 Ant 程序檔藉由 sql 目標執行 DDL。最後對 sun-appserv-samples 資料庫重複相同的實驗,並對產生的 SQL 檔案進行更多變更︰
對 sample 資料庫執行的上述所有變更
移除 create user 指令
移除 SET PATH 指令
將 Decimal 精度從 38 變更為 max 31
將 float 精度從 64 變更為 max 52
目前不支援 CREATE PROCEDURE 的 SPECIFIC 關鍵字
移除 GRANT 指令
若要將 Pointbase Java 程序轉換為使用 Java DB,則除需變更 Java 程式碼外,還需變更 CREATE PROCEDURE 陳述式。有關建立 Java DB Java 程序的資訊,可參閱 Derby Reference manual。Java DB 的下一個發行版本將支援 Boolean 資料類型。