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