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