2013-07-30 50 views
0

通常我需要將現有SQL Server數據庫的完整模式提取到文件。我需要涵蓋每個對象 - 表,視圖,函數,SP,UDDT,觸發器等。目的是讓我可以使用文件差異實用程序將該模式與基準參考進行比較。Python - 將SQL Server數據庫模式提取到文件

通常情況下,我使用企業管理器或Management Studio來編寫數據庫對象的腳本,然後連接這些文件以使一個大文件以一致的可預測順序排列。我想知道是否有辦法在Python中完成這個任務?顯然它需要一個額外的包,但是看過幾個(pyodbc,SQLAlchemy,SQLObject),它們都不適合這個用例。

回答

3

如果您可以連接到SQL Server並在Python中運行查詢,那麼是的 - 這是可能的,但它會花費很多精力和測試才能正常工作。

想法是使用系統表獲取有關每個對象的詳細信息,然後基於此生成DDL語句。 sys.syscomments表中已經存在一些(如果不是全部)DDL語句。

在開始使用Python之前,先在SSMS中執行並檢查它,然後開始。

select * 
from sys.tables 

select * 
from sys.all_columns 

select * 
from sys.views 

select * 
from sys.syscomments 

所有系統表documentation從MSDN。

2

我以前使用過這個PowerShell策略。顯然,這不是Python,但它是一個可以編寫的腳本,然後在Python中執行。請閱讀本文,因爲它可能是您最簡單(也是最便宜的)解決方案:http://blogs.technet.com/b/heyscriptingguy/archive/2010/11/04/use-powershell-to-script-sql-database-objects.aspx

作爲免責聲明,我只導出存儲過程,而不是每個對象。

+0

實際上,我比其他答案更喜歡這種方法,但PowerShell學習曲線對我來說是一個棘手的問題。現在我將使用Python選項,但是我可能會切換。 – JDM

相關問題