2011-03-31 21 views
0

我需要將給定模式的表導出到DDL腳本和插入語句中 - 並讓它腳本化,以使依賴項/約束得以維持。將數據插入語句的腳本Oracle表(DDL)插入到單個/多個sql文件中

我遇到這篇文章,建議如何使用數據存檔數據庫 - http://www.dba-oracle.com/t_archiving_data_in_file_structures.htm - 不確定文章是否適用於Oracle 10g/11g。

我在「Sql Developer」,「Toad for Oracle」,「DreamCoder for Oracle」等中看到了「導出數據表」的功能,但是我需要一次只做一個表,並且仍然需要找出手動執行腳本的正確順序。

是否有任何工具/腳本可以利用oracle元數據並生成帶有數據的DDL腳本?

請注意,某些表具有CLOB數據類型列 - 因此工具/腳本需要能夠處理這些列。

P.S.我需要類似於SQL Server 2008中的「生成腳本」功能,可以指定「腳本數據」選項並獲取帶有DDL和數據的自足腳本,並按表約束順序生成。請參閱:http://www.kodyaz.com/articles/sql-server-script-data-with-generate-script-wizard.aspx

感謝您的幫助!

回答

3

首先,認識到這不一定是可能的。視圖可以在包中使用一個函數,該函數也可以從視圖中進行選擇。另一個問題是,您可能需要將數據加載到表中,然後應用約束,儘管這可能比其他方式慢。

總之,你需要在這裏做一些工作。

找出系統中的依賴關係。 ALL_DEPENDENCIES是主要機制。

然後使用DBMS_METADATA.GET_DDL來提取DDL語句。對於小數據量,我會在數據加載之後單獨提取約束條件以應用。

在當前版本中,您可以將常規表中的external tables to unload data創建爲OS文件(顯然是相反的)。但是,如果你有奇特的數據類型(BLOB,RAW,XMLTYPE,用戶定義類型....),它將更具挑戰性。

+0

感謝您的詳細解答。最好。 – user12002221 2011-04-01 18:10:33

2

我建議你在這裏使用Oracle標準導出和導入(exp/imp),有沒有理由不考慮它?另外請注意,您可以使用導入的「indexfile」選項將SQL語句(不幸的是,這不包括插入)輸出到文件,而不是實際執行它們。

相關問題