2011-04-01 255 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