web-dev-qa-db-ja.com

同じデータベース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を使用しています

31
Govind Kailas

選択部分を括弧で囲む必要があります。

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

動作するはずです。 @Gilbertがコピーしないと言ったすべてのことに注意してください。

DB2 v9.5と言うので、ここではLinux/Unix/Windows上のDB2を想定しています。

34
bhamby

これを試して:

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

コピーされないオプションは次のとおりです。

  • チェック制約
  • 列のデフォルト値
  • 列コメント
  • 外部キー
  • BLOB列のログ記録されたコンパクトなオプション
  • 特殊タイプ
35

2つの手順で問題なく動作します。

テーブルbu_xを(xからa、b、c、dを選択して)WITHデータなしで作成します。

bu_x(a、b、c、d)に挿入し、xからa、b、c、dを選択します。

3
Maarten

すべての列をあるテーブルから別の既存のテーブルにコピーできます。

INSERT INTO table2 SELECT * FROM table1;

または、必要な列のみを別の既存のテーブルにコピーできます。

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

またはSELECT * INTO BACKUP_TABLE1 FROM TABLE1

0