2011-05-31 73 views

回答

2

如果我理解你的問題,你想將一組表從一個DB移動到另一個。

您可以使用下面的語法在BTEQ腳本複製表和數據:

CREATE TABLE <NewDB>.<NewTable> AS <OldDB>.<OldTable> WITH DATA AND STATS;

或者只是表結構:

CREATE TABLE <NewDB>.<NewTable> AS <OldDB>.<OldTable> WITH NO DATA AND NO STATS;

如果你得到真正的精明您可以創建一個BTEQ腳本,它在SELECT語句中動態構建上述語句,導出結果,然後在單個BTEQ腳本中運行新導出的文件。

還有一些其他選項可以用CREATE TABLE <...> AS <...>;來完成。您最好查看Teradata手冊瞭解更多詳情。

+0

這應該有所幫助,非常感謝Rob! – Jshee 2011-06-01 12:59:53

+0

不客氣! – 2011-06-01 14:26:47

+1

沒有捕捉到原始問題中的兩個物理實例。我的答案適用於在同一物理實例上覆製表。因此,不應該被標記爲正確答案。 – 2011-06-02 12:19:48

3

這是不可能的使用BTEQ,因爲你提到兩個數據庫都駐留在不同的服務器上。

有兩種解決方案。

  • Arcmain - 首先,您需要使用Arcmain備份,創建從表中包含的數據文件。然後,你需要使用Arcmain恢復從文件

  • TPT恢復數據 - Teradata並行傳輸。這是一個非常先進的工具。這不會創建像Arcmain這樣的文件。它直接在兩臺Teradata服務器之間移動數據。 (Wikipedia)

+0

剛剛在他的問題中發現了不同的服務器blip。 Arcmain會是最簡單的。 TPT聽起來很像NPARC,它使用兩個系統之間的命名管道移動數據。 – 2011-06-02 12:18:51

+0

@Rob好的。我在teradataquestions.com上見過你,你在哪裏工作? – emaillenin 2011-06-02 12:47:25

+0

我現在是一名獨立顧問,在Teradata數據倉庫擔任Lead DBA。 – 2011-06-02 13:51:13

0

還有幾個選項可以讓你從一張表複製到另一張。

可能最簡單的方法是編寫一個使用其通信層(ODBC,.NET數據提供程序,JDBC,cli等)之一的小程序,並使用它來執行select語句和insert語句。這需要一些工作,但比試圖學習如何編寫TPT腳本花費更少。你不需要任何'DBA'權限來編寫你自己的。

的Teradata還銷售其隱藏的一些工具的複雜性的其他應用程序。 Teradata Data Mover手柄在諸如arcmain和tpt之類的工具之間提供了抽象層。訪問這個工具很可能僅限於DBA類型。

0

如果你想將數據從一臺服務器遷移到另一臺服務器,然後 我們可以平面文件做到這一點。 首先,我們通過任何實用工具(如bteq或者fastexport)從源表提取數據到平面文件。 然後我們可以在mload,fastload或bteq腳本的幫助下將這些數據加載到目標表中。

相關問題