簡體   English   中英

使用Java合並兩個ms訪問數據庫

[英]merge two ms access database using java

我正在嘗試使用Java合並兩個ms access數據庫。 我正在從一個數據庫建立連接,而從另一個數據庫建立另一個連接。 我將所有記錄從每個表復制到另一個數據庫中的表。

除了將記錄從一個數據庫表復制到另一數據庫表之外,還有其他解決方案嗎? 這兩個數據庫具有相同的表結構。

在大多數情況下,復制關系數據庫要比單純復制表要多得多。 例如,您必須考慮復制數據的順序,以避免破壞完整性。

關於要復制的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查詢設計窗口構建的,僅作了少許修改。

您是否正在使用SQL執行此操作? 如果是這樣,那可能是您的SQL代碼而不是Java代碼的問題。
您可以對程序進行多線程處理,以便將每個表或一組表復制到不同的線程中。 如果表名不變,這將特別有用,因為您可以創建表名數組和線程子類,以將名稱放入SQL查詢中。 如果您使用的線程池大約為10個,這應該可以加快速度,盡管請謹慎操作,因為根據我對Access和Java的經驗,數據庫很容易損壞,因此在嘗試執行此操作之前,請確保已備份。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM