在同一数据库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

试试这个:

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

未复制的选项包括:

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

您必须用括号将所选部分括起来。

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

应该有效。注意吉尔伯特所说的不会被复制的所有内容。

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

两个步骤很好:

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

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

CREATE TABLE NEW_TABLENAME LIKE OLD_TABLENAME;

适用于DB2 V 9.7

CREATE TABLE SCHEMA.NEW_TB COPY AS 
(SELECT * FROM  SCHEMA.OLD_TB WHERE 1 = 2)
WITH DATA

一直为我工作

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

INSERT INTO表2从表1中选择*;

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

INSERT INTO表2(列名称)SELECT列名称FROM表1;

或从表1 中选择*INTO BACKUP_TABLE1