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"

これらはどれも機能しませんでした私はdb2v9.5を使用しています

4

5 に答える 5

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 に答える
41

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

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

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

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

于 2012-07-11T06:26:09.810 に答える
4

2つのステップが正常に機能します。

データなしでテーブル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;

DB2V9.7で動作します

于 2014-10-08T13:08:55.183 に答える
0

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

INSERT INTO table2 SELECT * FROM table1;

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

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

またはSELECT*INTO BACKUP_TABLE1 FROM TABLE1

于 2015-09-10T13:39:35.840 に答える