Подтвердить что ты не робот

Создайте копию таблицы в той же базе данных 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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

Попробуйте следующее:

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

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

  • Проверить ограничения
  • Значения по умолчанию для столбцов
  • Комментарии столбца
  • Внешние ключи
  • Записанная и компактная опция для столбцов BLOB
  • Отличительные типы

Ответ 3

Два шага работают нормально:

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

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

Ответ 4

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

INSERT INTO table2  SELECT * FROM table1;

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

INSERT INTO table2  (Имя_столбец (ов))  SELECT column_name (s)  FROM table1;

или SELECT * INTO BACKUP_TABLE1 FROM TABLE1

Ответ 5

CREATE TABLE NEW_TABLENAME LIKE OLD_TABLENAME;

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