1

我正在尝试合并两个ms access使用的数据库Java。我正在从一个数据库建立连接,并从另一个数据库建立另一个连接。我正在将每个表中的所有记录复制到另一个数据库中的表中。

除了将记录从一个数据库表复制到另一个数据库表之外,还有其他解决方案吗?两个数据库具有相同的表结构。

4

2 回答 2

1

在大多数情况下,复制关系数据库比简单地复制表要多得多。例如,您必须考虑复制数据的顺序以避免违反完整性。

关于用于复制的 SQL,Access 将接受外部 mdb / acdb 的名称作为目标,因此只要您没有附件或多值字段数据类型,前两个语句就可以工作。另一个问题是自动编号 ID,如果它们可能重叠,则 INSERT INTO 是不安全的,因为您最终可能会出现重复。

SELECT * INTO AnotherTest IN 'Z:\Docs\test.accdb'
FROM test;

INSERT INTO AnotherTest IN 'Z:\Docs\test.accdb'
SELECT  *
FROM test;

虽然上面的 INSERT 通常会起作用,但列出字段会更安全,省略任何自动编号字段。

INSERT INTO AnotherTest ( AText, ADate, ANumber ) IN 'Z:\Docs\test.accdb'
SELECT test.AText, test.ADate, test.ANumber
FROM test;

所有的语句都是使用 MS Access 查询设计窗口构建的,并且只稍作修改。

于 2013-01-19T10:51:41.127 回答
0

您是否使用 SQL 来执行此操作?如果是这样,那可能是您的 SQL 代码的问题,而不是您的 java 代码的问题。
您可以对程序进行多线程处理,以便将每个表或表集复制到不同的线程中。如果表名不更改,这将特别有用,因为您可以创建一个表名数组和一个将名称放入 SQL 查询的线程子类。如果您使用了 10 个左右线程的线程池,这应该会加快速度,但请注意这一点,因为我在访问和 java 方面的经验是数据库很容易损坏,因此请确保在尝试之前进行备份。

于 2013-01-19T09:56:12.927 回答