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
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.
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
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;
, 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
CREATE TABLE NEW_TABLENAME LIKE OLD_TABLENAME;
Fonctionne pour DB2 V 9.7