簡體   English   中英

用於數據庫差異的C#庫(ing)

[英]C# library for database diff(ing)

在為增量數據庫更新整理遷移腳本的同時,我發現現有的數據庫差異工具(我已經研究過)都不會產生我們開發過程所需的遷移腳本。

與幾乎所有其他開發項目一致,我們需要能夠使生產模式與最新的開發模式保持同步,而不會丟失生產數據。

到目前為止,該方法是刪除並重新創建不是表的任何對象(注意將序列的nextvals更新為適當的值),然后通過刪除不再存在的列來處理表差異,添加已經存在的列創建,重命名其類型或長度已更改的列,添加新列定義,然后使用適當的類型轉換使用數據填充更改的列。

當前的方法是完全自動化的,但它沒有考慮簡單重命名的列。 區分表定義(DBMS_METADATA_DIFF)並沒有給出任何機器可理解的線索,即列之后的列添加實際上是列重命名。 對於人類來說,列重命名可能是顯而易見的,特別是如果重命名只是語法修正或選擇更合適的名稱。

我試圖通過編寫我自己的數據庫差異腳本生成器並添加用於發現列重命名的邏輯來解決這個問題(支持人工干預,確認等)。 現在,我很確定我必須重新發明另一個輪子。

有什么好的開源庫我應該看看嗎? 我更喜歡C#但是因為它是我正在使用的Oracle,所以可能有一些很好的Java實現。 任何指針贊賞。

我們使用RedGate SQL Compare和SQL Data Compare API在安裝時在引導數據庫和目標(客戶端)數據庫之間生成差異模式和數據更新腳本。 它工作得很好。 RedGate提供了類似的Oracle產品(尚未使用它,因此您的里程可能會有所不同)

http://www.red-gate.com/products/oracle-development/schema-compare-for-oracle/

PS,我知道它不是開源的,但我認為你很難找到像這樣容易使用的庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM