2009-05-29 18 views
9

Estoy tratando de volcar el contenido de un esquema particular en un servidor IBM DB2 UDB en un archivo de texto sql (muy parecido a la funcionalidad mysqldump de mysql).SQL Dump from DB2

Encontré db2look, pero solo volca la estructura del esquema (solo ddl, no dml).

Entonces, ¿cómo puedo hacer mi trabajo?

jrh.

Respuesta

5

Puede usar SQquirreL, un cliente SQL implementado en Java, para lograr esto. En su Árbol de "Objetos" debe seleccionar todas las tablas deseadas y seleccionar "Scripts> Crear secuencia de datos" en el menú contextual.

+0

Bueno, he usado Aqua Data Studio para hacer eso .. funcionó bastante bien, gracias :) – jrharshath

+1

Bien, excepto por un conjunto de datos suficientemente grande que NO cabe en la memoria, simplemente no es una opción. Sin embargo, se puede usar para tablas más pequeñas. – egbokul

2

Puede utilizar EXPORT y IMPORT o IMPORT o LOAD comandos relacionados si el objetivo es transferir datos a otra base de datos DB2.

De hecho, puede generar los las afirmaciones basadas en metadatos de SYSCAT.TABLES

EXPORTACIÓN

SELECT 'EXPORT TO /usr/data/SCHEMA/' || TABNAME || '.ixf OF IXF LOBS TO /usr/data/SCHEMA/lbos/ MODIFIED BY LOBSINFILE SELECT * FROM SCHEMA.' || TABNAME || ';' 
    FROM SYSCAT.TABLES 
    WHERE TABSCHEMA = 'SCHEMA' 
ORDER BY TABNAME 

IMPORTACIÓN

SELECT 'IMPORT FROM /usr/data/SCHEMA/' || TABNAME || '.ixf OF IXF LOBS FROM /usr/data/SCHEMA/lobs/ MODIFIED BY LOBSINFILE INSERT INTO SCHEMA.' || TABNAME || ';' 
    FROM SYSCAT.TABLES 
    WHERE TABSCHEMA = 'SCHEMA' 
ORDER BY TABNAME 

Si desea que las secuencias de comandos reales de inserción, entonces es posible que necesite ir con una herramienta de terceros (I No conozco uno proporcionado por DB2, aunque podría estar equivocado.)

10

Lo que está buscando es el comando db2move. Para un esquema particular, debe usar el interruptor "sn".

Así, por ejemplo, para exportar los datos:

db2move [your_db_name] EXPORT -sn [your_schema_name] 

hay muchas opciones e interruptores disponibles para db2move dependiendo exactamente lo que quiere hacer.

Si db2move no es exactamente lo que necesita, puede revisar la tabla de Data Movement Options available in DB2.

+0

Una cosa a tener en cuenta es que db2move usa PC/IXL como formato de contenedor de datos y no produce un volcado de SQL. No estoy seguro si la pregunta asker pidió un volcado de SQL porque es algo con lo que está familiarizado o porque, por alguna razón, necesita un volcado de SQL real con INSERT. Si este último, db2move no lo ayudará. –

+0

Estás en lo cierto, doctor ... no estoy muy seguro de qué fue lo que estuvo después de haber estado tan vinculado a todas las opciones de movimiento de datos para db2 –

+0

+1 para el enlace excelente. – jrharshath

0

Para la importación, ajustar ligeramente para usar la carga ayuda a evitar que se rechacen las filas.

db2 -x "SELECT 'load FROM/usr/data/SCHEMA /' || TABNAME || '.ixf DE IXF LOBS FROM/usr/data/SCHEMA/MODIFIED BY identityoverride INSERT IN CFEXT.' || || TABNAME ';' DE SYSCAT.TABLES donde el orden TABSCHEMA = 'CFEXT' POR TABNAME"> /tmp/db2cfeimport.sql

0

Db2 esquema de copia de seguridad con todos los DDL:

que tengo uso de comandos a continuación se trabajado para mí para exportar todos los DDL.

db2look -d CusDb -x -e -z CusSchema -o OutputFile 

Sintaxis: db2look -d -e DbName -x -z SchemaName -o OutputFile_name