Este ejemplo muestra cómo capturar el DDL de una tabla en Pointbase y crear la misma tabla en Derby mediante Netbeans 5.0. También puede utilizar la herramienta de comandos y el comando 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;
Los resultados derivados de la ejecución de unload database se escriben en sampledb.sql, como se indica en el ejemplo anterior. El archivo sampledb.sql contiene todos los DDL necesarios para crear las tablas y los índices requeridos. También contiene el DML para insertar de nuevo los datos en la base de datos. El comando del programa de comandos RUN está diseñado para importar los datos en otra base de datos Pointbase mediante la secuencia de comandos generada. A continuación, se muestra un ejemplo de la apariencia que tienen las instrucciones INSERT y los datos asociados en el archivo generado:
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' };
Puede editar fácilmente el archivo generado a partir del comando unload database de tal forma que sólo esté compuesto por el DDL (por ejemplo, no sería tan complicado escribir un programa que procese las instrucciones insert). Como prueba, utilizamos el comando de anulación de la carga de la base de datos en la base de datos sample de Pointbase y, a continuación, editamos la secuencia de comandos generada, realizando los siguientes cambios:
Se ha eliminado Organization Heap del final de todas las instrucciones CREATE Table.
Se ha eliminado el comando COMMIT.
Se ha cambiado el valor booleano datatype por smallint .
Se han eliminado todas las instrucciones INSERT y sus datos asociados.
A continuación, se utiliza una secuencia de comandos Ant sencilla para ejecutar el DDL mediante el destino sql . Por último, se repite el mismo experimento para la base de datos sun-appserv-samples , que requiere que se efectúen los siguientes cambios adicionales en el archivo SQL generado:
Realice todos los cambios como se describe anteriormente para la base de datos de ejemplo.
Elimine los comandos create user.
Elimine los comandos SET PATH.
Cambie la precisión Decimal de 38 a un máximo, max, de 31.
Cambie la precisión float de 64 a un máximo, max, de 52.
Actualmente no se admite la palabra clave SPECIFIC para CREATE PROCEDURE.
Se han eliminado los comandos GRANT.
Para cambiar los procedimientos de Java de Pointbase para que funcionen con Derby, es necesario realizar varios cambios en el código de Java, así como en las instrucciones CREATE PROCEDURE. Puede encontrar información sobre la creación de procedimientos de Java de Derby en el manual de referencia de Derby. Se incluirá compatibilidad con el tipo de datos Boolean en la próxima versión de Derby.