2012-07-10 21 views
26

異なる名前の同じデータベースにテーブルを簡単にコピーする方法はありますか?同じデータベース内のテーブルのコピーを作成するDB2

: 私はこれらの

db2 "SELECT INTO SCHEMA.NEW_TB FROM SCHEMA.OLD_TB"

db2 "SELECT * FROM SCHEMA.OLD_TB INSERT INTO SCHEMA.NEW_TB"

なし私はこれを試してみてのDB2 V9.5

+0

なぜ1 = 2の条件を使用していますか? – Line

+1

ああ、データをコピーするのではなく、スキーマだけをコピーしたいからです。あなたに気をつけて申し訳ありません;) – Line

答えて

30

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

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

@ギルバートはコピーされないと言ったすべてのことに注意を払う。

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

+2

あなたの 'WHERE'条件はちょっと奇妙です。DB2がデータをコピーしないように偽の述語を使用している場合は、構造体をコピーするだけのためにここでは「WITH NO DATA」を使用して行うことができます。あるいは単に 'CREATE TABLE SCHEMA.NEW_TB LIKE SCHEMA.OLD_TB'を実行することもできます。 – bhamby

+0

ありがとう@bhamby ..私の場合はbtwnです。db2はAIX上で動作しています –

+1

「データなし」なぜコンテンツをコピーしたくないのですか?どのようにテーブルを作成し、挿入するのですか? –

28

を使用しています を働いた

db2 "CREATE TABLE SCHEMA.NEW_TB COPY AS SELECT * FROM SCHEMA.OLD_TB WHERE 1 = 2"

、下記に記載されているこれらのいくつかを試してみました
CREATE TABLE SCHEMA.NEW_TB LIKE SCHEMA.OLD_TB; 
INSERT INTO SCHEMA.NEW_TB (SELECT * FROM SCHEMA.OLD_TB); 
コピーされません0

のオプションが含まれます:

  • チェック制約
  • 列のデフォルト値
  • をカラムは
  • 外部キー
  • ログインして、BLOB列にコンパクトオプション
  • 特殊タイプコメント
+0

ありがとう@Gilbert –

-2
CREATE TABLE NEW_TABLENAME LIKE OLD_TABLENAME; 

ワークス9.7

+1

データをコピーしません。 – KMetin

3

2つのステップ正常に動作:

は、データのない(Xから、B、C、Dを選択)として表bu_xを作成します。

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

+1

2番目のステップで 'select select'が正しいことを確認できますか? – EWit

+0

'INSERT INTO XXX.YYY(SELECT * FROM ZZZ.TTT)'はDB2 7で私のために働いていました – ATorras

0

私たちは、別のテーブルから既存のテーブルをすべての列をコピーすることができます。TABLE1 FROM table2の SELECT * INTO

INSERT。

それとも我々は別のものにしたい列だけ、既存のテーブルにコピーすることができます:表2 INTO

INSERT(COLUMN_NAME(S)) SELECT COLUMN_NAME(S)TABLE1 FROM を。

またはSELECT * INTO BACKUP_TABLE1 FROM TABLE1

関連する問題