2011-04-01 198 views
7

我有2個數據庫,Oracle和SQlite。我想在我的一個應用程序中創建SQLite中某些Oracle表的精確副本。大多數這些表包含超過10,000行,因此通過以編程方式遍歷每行來複制每個表格效率不高。此外,表結構可能會在將來發生變化,所以我想用一種通用的方式實現這一點,而不用硬編碼SQL語句。有沒有辦法做到這一點?在SQLite數據庫中創建Oracle數據庫表的副本

p.s. - 此應用程序正在使用Qt框架開發。所有查詢和數據庫都由QtSql模塊對象表示。

回答

5

不能用Qt框架,但對於大量的數據來說通常比​​較好用批量複製操作。從Oracle

導出數據 http://download.oracle.com/docs/cd/B25329_01/doc/admin.102/b25107/impexp.htm#BCEGAFAB

將數據導入SQLite的 http://www.sqlite.org/cvstrac/wiki?p=ImportingFiles

IHTH

+0

謝謝你的避難所,爲你的快速回復。但是看起來,這種卸載必須使用Oracle數據庫XE圖形用戶界面或SQL * Loader來完成。但是有什麼辦法可以在我的應用程序代碼中做到這一點?如果可能的話,這將是理想的解決方案。 – kasper360 2011-04-01 04:59:47

+0

幾乎總是有一種方法可以從應用程序代碼運行外部程序。它可能就像創建命令行一樣簡單,如cmdLine =「SQL * Loader out -oTabDelimited -T $ {TableName} -F $ {outFilename}」,並使用system cmd來運行它,即system(cmdLine); (這只是一個關於如何去做的一般想法,所以請在幫助頁面中查看您的代碼寫入的語言。(Qt?)查找運行cmd,system cmd或其他。然後您可以像我的例子一樣使用變量,並根據需要進行復制來管理所有db活動。警告,代碼中的數據庫管理可能會變得非常複雜。 – shellter 2011-04-01 05:13:29

5

你可能真的想用什麼Oracle Database Mobile Server,它可以自動同步SQLite和Oracle數據庫。

最近發佈的Oracle數據庫移動服務器(正式名稱爲Oracle Database Lite移動服務器)支持在客戶端上運行的Oracle數據庫和SQLite或Berkeley DB數據庫之間的同步。它支持同步和異步數據交換,以及客戶端和服務器之間的安全通信。您可以將Mobile Server配置爲基於多個選項進行同步,而無需修改正在訪問數據庫的應用程序。

對於使用移動服務器的開發人員和實施人員的問題,您還可以找到優秀的discussion forum