在同一数据库DB2中创建表的副本

时间:2012-07-10 15:20:27

标签: copy db2 aix

是否有一种简单的方法可以将表复制到具有不同名称的同一数据库中。 我尝试了下面列出的一些,

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

4 个答案:

答案 0 :(得分:35)

试试这个:

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

未复制的选项包括:

  • 检查约束
  • 列默认值
  • 专栏评论
  • 外键
  • BLOB列上的记录和压缩选项
  • 不同类型

答案 1 :(得分:34)

您必须用括号括起选择部分。

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

应该有效。注意@Gilbert所说的不会复制的所有内容。

我在Linux / Unix / Windows上假设DB2,因为你说的是​​DB2 v9.5。

答案 2 :(得分:3)

两个步骤正常:

创建表bu_x为(从x中选择a,b,c,d)没有数据;

插入bu_x(a,b,c,d)从x中选择a,b,c,d;

答案 3 :(得分:-2)

CREATE TABLE NEW_TABLENAME LIKE OLD_TABLENAME;

适用于DB2 V 9.7