如何將數據從一個數據庫中的多個表複製到駐留在不同服務器上的另一個數據庫?用於在兩臺Teradata服務器之間複製數據的Bteq腳本
這是可能通過Teradata中的BTEQ腳本?
如果是這樣,請提供樣本。
如果不是,除了使用平面文件外,還有其他的選擇嗎?
如何將數據從一個數據庫中的多個表複製到駐留在不同服務器上的另一個數據庫?用於在兩臺Teradata服務器之間複製數據的Bteq腳本
這是可能通過Teradata中的BTEQ腳本?
如果是這樣,請提供樣本。
如果不是,除了使用平面文件外,還有其他的選擇嗎?
如果我理解你的問題,你想將一組表從一個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手冊瞭解更多詳情。
這是不可能的使用BTEQ,因爲你提到兩個數據庫都駐留在不同的服務器上。
有兩種解決方案。
Arcmain - 首先,您需要使用Arcmain備份,創建從表中包含的數據文件。然後,你需要使用Arcmain恢復從文件
TPT恢復數據 - Teradata並行傳輸。這是一個非常先進的工具。這不會創建像Arcmain這樣的文件。它直接在兩臺Teradata服務器之間移動數據。 (Wikipedia)
剛剛在他的問題中發現了不同的服務器blip。 Arcmain會是最簡單的。 TPT聽起來很像NPARC,它使用兩個系統之間的命名管道移動數據。 – 2011-06-02 12:18:51
@Rob好的。我在teradataquestions.com上見過你,你在哪裏工作? – emaillenin 2011-06-02 12:47:25
我現在是一名獨立顧問,在Teradata數據倉庫擔任Lead DBA。 – 2011-06-02 13:51:13
還有幾個選項可以讓你從一張表複製到另一張。
可能最簡單的方法是編寫一個使用其通信層(ODBC,.NET數據提供程序,JDBC,cli等)之一的小程序,並使用它來執行select語句和insert語句。這需要一些工作,但比試圖學習如何編寫TPT腳本花費更少。你不需要任何'DBA'權限來編寫你自己的。
的Teradata還銷售其隱藏的一些工具的複雜性的其他應用程序。 Teradata Data Mover手柄在諸如arcmain和tpt之類的工具之間提供了抽象層。訪問這個工具很可能僅限於DBA類型。
如果你想將數據從一臺服務器遷移到另一臺服務器,然後 我們可以平面文件做到這一點。 首先,我們通過任何實用工具(如bteq或者fastexport)從源表提取數據到平面文件。 然後我們可以在mload,fastload或bteq腳本的幫助下將這些數據加載到目標表中。
這應該有所幫助,非常感謝Rob! – Jshee 2011-06-01 12:59:53
不客氣! – 2011-06-01 14:26:47
沒有捕捉到原始問題中的兩個物理實例。我的答案適用於在同一物理實例上覆製表。因此,不應該被標記爲正確答案。 – 2011-06-02 12:19:48