36

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

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

5 回答 5

41

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

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

应该管用。注意@Gilbert 所说的所有不会被复制的东西。

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

于 2012-07-11T06:26:09.810 回答
41

尝试这个:

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

未复制的选项包括:

  • 检查约束
  • 列默认值
  • 专栏评论
  • 外键
  • BLOB 列上的记录和压缩选项
  • 不同类型
于 2012-07-10T15:47:29.050 回答
4

两个步骤可以正常工作:

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

插入 bu_x (a,b,c,d) select select a,b,c,d from x ;

于 2014-11-24T10:40:31.020 回答
3
CREATE TABLE NEW_TABLENAME LIKE OLD_TABLENAME;

适用于 DB2 V 9.7

于 2014-10-08T13:08:55.183 回答
0

我们可以将所有列从一个表复制到另一个现有表:

插入表 2 SELECT * FROM 表 1;

或者我们可以只将我们想要的列复制到另一个现有的表中:

INSERT INTO table2 (column_name(s)) SELECT column_name(s) FROM table1;

或从 TABLE1 中选择 * INTO BACKUP_TABLE1

于 2015-09-10T13:39:35.840 回答