Créer une copie d'une table dans la même base de données DB2

Existe-t-il un moyen facile de copier une table dans la même base de données bien sûr avec un nom différent. J'ai essayé certains de ces énumérés ci-dessous,

db2 "CREATE TABLE SCHEMA.NEW_TB COPY AS SELECT * FROM SCHEMA.OLD_TB WHERE 1 = 2"

db2 "SELECT INTO SCHEMA.NEW_TB FROM SCHEMA.OLD_TB"

db2 "SELECT * FROM SCHEMA.OLD_TB INSERT INTO SCHEMA.NEW_TB"

Aucun de ces travaux J'utilise db2 v9. 5

29
demandé sur Govind Kailas 2012-07-10 19:20:27

5 réponses

Vous devez entourer la partie sélectionnée de parenthèses.

CREATE TABLE SCHEMA.NEW_TB AS (
    SELECT *
    FROM SCHEMA.OLD_TB
) WITH NO DATA

Devrait fonctionner. Faites attention à toutes les choses que @ Gilbert a dit ne serait pas copié.

Je suppose DB2 sur Linux / Unix / Windows ici, puisque vous dites DB2 v9. 5.

32
répondu bhamby 2012-07-11 06:26:09

Essayez ceci:

CREATE TABLE SCHEMA.NEW_TB LIKE SCHEMA.OLD_TB;
INSERT INTO SCHEMA.NEW_TB (SELECT * FROM SCHEMA.OLD_TB);

Les Options qui ne sont pas copiées incluent:

  • Vérifier les contraintes
  • valeurs par défaut de la colonne
  • commentaires dans la colonne
  • clés Étrangères
  • Option consignée et compacte sur les colonnes BLOB
  • types Distincts
30
répondu Gilbert Le Blanc 2012-07-10 15:47:29

Deux étapes fonctionne très bien:

Créer la table bu_x as (sélectionner A,B,c,D à partir de x ) Sans données;

Insérer dans bu_x (A,b,C,d) Sélectionner Sélectionner A,b,c,D à partir de x;

3
répondu Maarten 2014-11-24 10:40:31

, Nous pouvons copier toutes les colonnes d'une table à l'autre, table existante:

Insérer dans le table2 Sélectionnez * dans la table1;

Ou nous ne pouvons copier que les colonnes que nous voulons dans une autre table existante:

Insérer dans le table2 (nom_colonne(s)) Sélectionnez nom_colonne(s) De la table1;

Ou sélectionnez * dans BACKUP_TABLE1 à partir de TABLE1

0
répondu Sandeep.Mangalam 2015-09-10 13:39:35
CREATE TABLE NEW_TABLENAME LIKE OLD_TABLENAME;

Fonctionne pour DB2 V 9.7

-2
répondu Rbk528 2014-10-08 13:28:22