2009-05-29 12 views
9

J'essaie de vider le contenu d'un schéma particulier dans un serveur IBM DB2 UDB dans un fichier texte sql (un peu comme la fonctionnalité mysqldump de mysql).Dump SQL à partir de DB2

Je suis tombé sur db2look, mais il ne déverse que la structure du schéma (seulement ddl, no dml).

Alors, comment puis-je faire mon travail?

jrh.

Répondre

5

Vous pouvez utiliser SQquirreL, un client SQL implémenté en Java, pour ce faire. Dans son "Objects" -Tree vous sélectionnez toutes les tables souhaitées et sélectionnez "Scripts> Créer un script de données" dans le menu contextuel.

+0

Eh bien, j'utiliser Aqua Data Studio pour le faire .. cela a fonctionné assez bien, merci :) – jrharshath

+1

Nice, à l'exception d'un ensemble de données suffisamment important qui ne rentrera pas dans la mémoire, ce n'est tout simplement pas une option. Peut être utilisé pour les petites tables cependant. – egbokul

2

Vous pouvez utiliser les commandes EXPORT et IMPORT ou LOAD si le but est de transférer des données dans une autre base de données DB2.

En fait, vous pouvez générer les déclarations basées sur les métadonnées de SYSCAT.TABLES

EXPORT

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 

IMPORT

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 vous voulez que les scripts d'insertion réelle, alors vous devrez peut-être aller avec un outil tiers (I Je ne suis pas au courant d'un fourni par DB2, bien que je puisse me tromper.)

10

Ce que vous cherchez est la commande db2move. Pour un schéma particulier, vous devez utiliser le commutateur "sn".

Ainsi, par exemple pour exporter les données:

db2move [your_db_name] EXPORT -sn [your_schema_name] 

Il y a beaucoup d'options et commutateurs disponibles pour db2move selon exactement ce que vous voulez faire.

Si db2move n'est pas exactement ce dont vous avez besoin, vous pouvez consulter le tableau de Data Movement Options available in DB2.

+0

Une chose à noter est que db2move utilise PC/IXL comme format de conteneur de données et ne produit pas de vidage SQL. Je ne suis pas sûr si l'asker de la question a demandé un vidage SQL parce que c'est ce qu'il connaît ou parce que, pour une raison quelconque, il a besoin d'un vrai vidage SQL avec INSERTs. Si ce dernier, db2move ne l'aidera pas. –

+0

Vous avez raison, docteur ... pas vraiment sûr de ce qui était op après si lié à toutes les options de mouvement de données pour db2 –

+0

+1 pour le grand lien! – jrharshath

0

Pour l'importation, un léger ajustement pour utiliser la charge permet d'éviter le rejet des rangées. Db2 -x "SELECT 'charger FROM/usr/data/SCHEMA /' || TABNAME || '.ixf OF IXF LOBS DE/usr/data/SCHEMA/MODIFIE PAR identityoverride INSERT IN CFEXT.' || TABNAME || '' DE SYSCAT.TABLES OU TABSCHEMA = 'CFEXT' ORDER BY TABNAME »> /tmp/db2cfeimport.sql

0

Db2 schéma avec toutes sauvegarde LDD:

Je vérifiions ci-dessous commande il travaillé pour moi d'exporter tous DDL.

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

Syntaxe: db2look -d DbName -x -e -Z SchemaName -o OutputFile_name