我有一个包含 10 个表的本地数据库。我的工作是从每个表中逐个读取数据(在某些条件下从每个表中选择数据),然后将该数据存储在远程数据库中。
远程数据库具有与本地数据库相同的 10 个表。以一种简单的方式,我必须将数据从本地数据库移植到远程数据库。
如何最好地做到这一点?
在本地数据库中创建一个存储过程,将本地数据库复制到远程数据库。从您的 Java 程序中调用该存储过程。
只有当您的数据库实现支持从不同的实现链接到远程数据库时,这才有可能。
如果我在 oracle 中交谈,您可以在目标数据库中创建一个数据库链接,例如 source_link
http://docs.oracle.com/cd/B28359_01/server.111/b28310/ds_concepts002.htm
然后连接到目标数据库
插入 A (field1,field2,...) select field1,feild2.... from A@source_link where
与Java无关,但也是一种有效的方式
您可以使用 ETL(提取/传输和加载)。Spoon 是一个免费工具,您可以纯粹使用 SQL 创建转换来执行此类任务。
http://wiki.pentaho.com/display/EAI/Spoon+User+Guide
http://rpbouman.blogspot.com.au/2006/06/pentaho-data-integration-kettle-turns.html
实现这一点的最基本的简单方法是使用jdbc
首先,您需要连接到每个数据库,为此您需要jdbc driver
为您必须处理的每个数据库系统提供一个,jdbc 驱动程序是一个实现jdbc API的库,由每个数据库供应商为其数据库系统提供。
请参阅此链接,该链接显示了如何建立与数据库的连接。
建立连接后,您可以创建语句来检索和更新数据。检索到的数据在ResultSet中返回。
此链接显示了如何做到这一点。
总而言之,您需要执行以下步骤
Connection
到源数据库Statement
并将您的select
查询发送到源数据库Resultset
并保存在一些 POJO 的集合中ResultSet
_Statement
Connection
Connection
目标数据库Statement
并将您的update/insert into
查询发送到目标数据库ResultSet
_Statement
Connection