2013-11-15 55 views
3

我想在DB2中重命名錶像這樣如何在sql db2中重命名錶?

rename table schema1.mytable to schema2.mytable 

但得到以下錯誤消息:

the name "mytable" has the wrong number of qualifiers.. SQLCODE=-108,SQLSTATE=42601 

什麼是這裏的問題....我使用從確切的語法IBM publib文檔。

回答

7

您無法更改給定對象的模式。你必須重新創建它。

有severals的方式做到這一點:

  • 如果你只有一個表,你可以exportimport/load表。如果使用IDX格式,則DDL將包含在生成的文件中。如果使用其他格式,表格已創建。
  • 您可以通過重新創建表:

    Create table schema2.mytable like schema1.mytable

  • 你可以用db2look工具提取DDL

  • 如果你正在改變給出模式的架構名稱,你可以使用ADMIN_COPY_SCHEMA

最後兩個選項只創建表結構,您仍然需要導入數據。其創建表後,可以通過不同的方式插入數據:

  • 直接從光標

  • 插入

    insert into schema2.mytable select * from schema1.mytable

  • 通過負載通過從文件加載或進口(該文件在上一步輸出)

問題是forei gn關係,因爲它們必須被重新創建。您可以創建一個alias。這很容易,你不必處理關係。

+0

您好感謝 - 想可能有一個命令來簡單地將表移動到新的模式中,但是從實際表中在另一個模式中創建新表的方式,然後插入爲我完成這項工作。但更麻煩,但沒關係。 – brucezepplin

+1

還有一個'ADMIN_MOVE_TABLE'系統存儲過程完全按照它的說法進行,包括所有的依賴關係。 – mustaccio

+0

@mustaccio我也認爲ADMIN_MOVE_TABLE可以做到這一點,但文檔沒有選項來提供不同的模式:http://pic.dhe.ibm.com/infocenter/db2luw/v10r5/topic/com.ibm.db2 .luw.sql.rtn.doc/doc/r0055069.html – AngocA

0

您不是在提供的示例中重命名錶,而是嘗試移動到不同的模式,它不是同一件事。查看db2move工具。

-1

如果您保持原樣並使用新名稱和模式創建別名,該怎麼辦?

+0

不幸的是,這實際上並沒有移動表格,它只是創建一個指向它的指針。這種_can_在某些情況下很有用,但在表需要移動時無助。 –

-2

重命名錶意味着重命名同一模式中的表。要重命名的其他模式,DB2調用它的別名:

DB2爲

+0

不幸的是,這並沒有實際移動表格,它只是創建一個指向它的指針。這在某些情況下可能很有用,但在實際需要移動表時不會起作用。此外,這與現有答案相同。 –

+0

賓果!你是對的 :) – Tom123456

5

創建別名可以輕鬆地與這一說法重命名錶:

RENAME TABLE SCHEMA.TABLENAME TO NEWTABLENAME;