Exporting Tables from Pointbase to Derby
Another option for doing this is by using the commander tool and the 'unload database' command:
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:
PHONE: 1-877-238-8798 (US & CANADA)
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.
The results from executing the 'unload database' command is written in the above example to the file sampledb.sql.
The sampledb.sql file contains all of the DDL requried to create the necessary tables and indexes.
It also contains the DML to insert the data back into the database. The commander command RUN is intended to be used import the data into another pointbase database using the script that was generated.
Here is an example of what the INSERT statments and associated data look like in the generated file:
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'
You could easily edit the file generated from the commander 'unload database' command so that it only consisted of the DDL (it would not be hard to write a program which would process the insert statements and perhaps I will try and find time to do so).
As a simple test, I used the unload database command against the pointbase sample database. I edited the script that was generated making the following changes:
- Removed the phrase Organization Heap from the end of all CREATE Table Statements
- Removed the COMMIT command
- Changed the Boolean datatype to be smallint
- Removed all of the INSERT statements and the associated data
I then created a simple ant script to execute the DDL using the sql target.
I then repeated the same experiment for the sun-appserv-samples database requiring the following additional changes to the generated sql file:
- Made changes as described above for the sample database
- removed the create user commands
- removed the SET PATH commands
- Changed the Decimal precision from 38 to max of 31
- changed the float precision from 64 to max of 52
- The SPECIFIC keyword for CREATE PROCEDURE is not currently supported
- removed the GRANT commands
Converting Pointbase java procedures to work with Derby requires some changes to the java code as well as to the CREATE PROCEDURE statements. Info on creating Derby Java procedures can be found in the Derby Reference manual.
Support for the Boolean datatype should be in the next release of Derby.