Создать копию таблицы в той же базе данных DB2

есть ли простой способ скопировать таблицу в ту же базу данных, конечно, с другим именем. Я попробовал некоторые из них, перечисленных ниже,

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"

ни один из них не работал Я использую db2 v9.5

5 ответов


вы должны окружить выделенную часть скобками.

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

должны работать. Обратите внимание на все, что @Gilbert сказал, не будет скопировано.

Я предполагаю DB2 на Linux / Unix / Windows здесь, так как вы говорите DB2 v9.5.


попробуйте это:

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

параметры, которые не копируются, включают:

  • Регистрация ограничений
  • значения по умолчанию для столбца
  • комментарии столбце
  • внешние ключи
  • Logged и компактный вариант на столбцах BLOB
  • различных типа

два шага нормально работает:

создать таблицу bu_x as (выбрать a,b,c, d из x ) без данных;

вставить в bu_x (a,b,c,d) выберите Выбрать a,b,c,d из x ;


мы можем скопировать все столбцы из одной таблицы в другую, существующую таблицу:

вставить в таблицу 2 Выберите * из таблицы 1;

или мы можем скопировать только столбцы, которые мы хотим, в другую существующую таблицу:

вставить в таблицу 2 (column_name (s)) Выберите column_name(s) Из таблицы 1;

или выберите * в BACKUP_TABLE1 из TABLE1


CREATE TABLE NEW_TABLENAME LIKE OLD_TABLENAME;

работает для DB2 V 9.7