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

问题描述 投票:0回答:6

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

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

copy db2 aix
6个回答
44
投票

试试这个:

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

不被复制的选项包括:

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

43
投票

你必须用括号把选择的部分括起来。

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

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

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


4
投票

两个步骤都可以:

create table bu_x as (select a,b,c,d from x ) WITH no data;

insert into bu_x (a,b,c,d) select select a,b,c,d from x ;


3
投票
CREATE TABLE NEW_TABLENAME LIKE OLD_TABLENAME;

适用于 DB2 V 9.7


0
投票

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

插入表 2 从表 1 中选择 *;

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

插入表 2 (列名) 选择 column_name(s) 从表 1;

或 SELECT * INTO BACKUP_TABLE1 FROM TABLE1


0
投票

CREATE TABLE SCHEMA.NEW_TB 复制为 (SELECT * FROM SCHEMA.OLD_TB WHERE 1 = 2) 有数据

一直为我工作

© www.soinside.com 2019 - 2024. All rights reserved.