2011-06-02 36 views
2

我想要一個跨平臺的方式將SQL Server數據庫的DDL轉儲到文件,所以我可以讓它們保持版本控制。我目前在Windows上的VBScript中使用SQLDMO來做到這一點,但我希望能夠從Linux系統中執行此操作,最好是使用Python。如何以跨平臺方式生成Microsoft SQL Server DDL(最好使用Python)?

我目前有一些使用SQLAlchemy表反射的解決方案,但它有點慢,目前並不能給我所有我想要的細節。例如,外鍵缺少「ON DELETE CASCADE」。

是否有任何其他項目可以通過T-SQL獲得DDL的重構?如果是這樣,我可以將它移植到Python,而不會有太多麻煩。其他建議也歡迎。

+0

您可以使用RDP客戶端從遠程桌面從* nix到WinServer,並運行您現有的腳本... – 2011-06-02 01:34:58

+0

*如果可用*,我找到微軟VS數據庫項目(需要VS,不知道哪個版本)成爲這項任務的體面工具。我認爲實際上有一種方法可以讓SQL Server將定義作爲文本文本吐出來,但我可能只是將其做出來。 – 2011-06-02 01:46:15

回答

0

這裏是我的一些代碼,這是否刺:

https://bitbucket.org/rsyring/mssqlddlwriter/

它的表,約束指標寫入基本信息,並觸發出來的文件。

+0

oops。沒有意識到你是原始的海報 - 我想知道bitbucket項目如何可以如此近期! :) – Tao 2011-06-03 08:34:01

0

這不是一個完整的解決方案(它是一個腳本,最初由Tim Chapman在某些時候從互聯網上抓取,並且已經修補了幾次),但是我使用了T-SQL存儲過程可以編寫腳本表:

https://github.com/TaoK/PoorMansTSqlFormatter/blob/master/PoorMansTSqlFormatterTest/Data/InputSql/5_ComplexDDL.txt

這是沒有多大用處,如果你正在尋找腳本其它目的以及(特效,視圖等),但如果你正在尋找只是表結構,這是很努力對我來說好!就像上面的@ Randy的建議一樣,它處理表,索引和約束,儘管這不能處理觸發器。

+0

感謝您的鏈接。我正在使用SQLAlchemy反射來生成表部分,但是我擔心我缺少一些細節。可以最終實現我自己,在這一點上,鏈接將有所幫助。 – 2011-06-03 19:54:59