我正在尝试合并两个ms access
使用的数据库Java
。我正在从一个数据库建立连接,并从另一个数据库建立另一个连接。我正在将每个表中的所有记录复制到另一个数据库中的表中。
除了将记录从一个数据库表复制到另一个数据库表之外,还有其他解决方案吗?两个数据库具有相同的表结构。
问问题
513 次
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 回答