4

我有一个包含 10 个表的本地数据库。我的工作是从每个表中逐个读取数据(在某些条件下从每个表中选择数据),然后将该数据存储在远程数据库中。

远程数据库具有与本地数据库相同的 10 个表。以一种简单的方式,我必须将数据从本地数据库移植到远程数据库。

如何最好地做到这一点?

4

4 回答 4

3

在本地数据库中创建一个存储过程,将本地数据库复制到远程数据库。从您的 Java 程序中调用该存储过程。

只有当您的数据库实现支持从不同的实现链接到远程数据库时,这才有可能。

于 2013-06-05T08:08:01.137 回答
2

如果我在 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无关,但也是一种有效的方式

于 2013-06-05T07:51:25.513 回答
1

您可以使用 ETL(提取/传输和加载)。Spoon 是一个免费工具,您可以纯粹使用 SQL 创建转换来执行此类任务。

http://kettle.pentaho.com/

http://wiki.pentaho.com/display/EAI/Spoon+User+Guide

http://rpbouman.blogspot.com.au/2006/06/pentaho-data-integration-kettle-turns.html

于 2013-06-05T07:14:02.407 回答
1

实现这一点的最基本的简单方法是使用jdbc

首先,您需要连接到每个数据库,为此您需要jdbc driver为您必须处理的每个数据库系统提供一个,jdbc 驱动程序是一个实现jdbc API的库,由每个数据库供应商为其数据库系统提供。

请参阅此链接,该链接显示了如何建立与数据库的连接。

建立连接后,您可以创建语句来检索和更新数据。检索到的数据在ResultSet中返回。

此链接显示了如何做到这一点。

总而言之,您需要执行以下步骤

  1. 创建Connection到源数据库
  2. 创建一个Statement并将您的select查询发送到源数据库
  3. 使用 检索结果Resultset并保存在一些 POJO 的集合中
  4. 关闭源数据库ResultSet_StatementConnection
  5. 创建一个Connection目标数据库
  6. 创建一个Statement并将您的update/insert into查询发送到目标数据库
  7. 关闭目标数据库ResultSet_StatementConnection
  8. 完毕!
于 2013-06-05T07:43:21.487 回答