簡體   English   中英

如何將數據從Oracle中的(PL /)SQL復制到另一個DBMS?

[英]How to copy data from (PL/)SQL in Oracle to another DBMS?

任務 :將數據庫中的所有數據(無模式)復制到另一個數據庫(可能是不同類型)。 我無法修改源數據庫,因此它是只讀備份

上下文 :將Oracle與許多數據庫集成。 現在我正在整合Oracle和Postgres。

資源 :僅限連接字符串,能夠以最高可用權限連接數據庫。 (我無法通過ssh訪問它 - 無法通過ssh創建順序備份和下載文件,或者編譯和啟動web / ftp服務器等)

問題 :是否有任何經過驗證的快速方法來提取這些數據? 也許某人有一個干凈的代碼的開源解決方案?

這里出現“fast”這個詞,因為只需在一個回合中選擇N行(使用rownum或row_number())並轉移到目標數據庫或中間文件太慢。

我建議你看看Liquibase 我成功地使用它來保持模式和數據在多個環境中保持一致(盡管只有SQLServers,但我確信它也適用於不同的RDBMS)。

至於性能我有點擔心,因為你提到“太字節數據”......不過,它可能值得一試。

干杯,

像彈簧批這樣的輕量級ETL工具可能是完成此任務的完美工具。

數據塊的微觀管理就是它的編寫方式。

看一下jdbc游標示例:您只需配置SELECT和INSERT語句,以及映射,Spring-Batch將處理分頁。

你可以在github找到它: https//github.com/SpringSource/spring-batch/blob/master/spring-batch-samples/src/main/resources/jobs/iosample/jdbcCursor.xml

參考資料可在以下網址找到: http//static.springsource.org/spring-batch/reference/html/readersAndWriters.html#database

Spring批處理保持已經處理了多少記錄的狀態,並允許繼續先前崩潰的進程。 它通過將計數器保存在'jobRepository'中來實現,例如,它可以在第三個數據庫中。

當然,這是一個純java解決方案,本機解決方案可能更快,但如果你只獲得JDBC連接字符串,你可能會給這一點。 這也假設您知道要傳輸的所有表的表結構。 如果沒有,像SquirrelSQL這樣的簡單JDBC工具可以幫到你。

Greets,Geert。

暫無
暫無

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

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