[英]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.