[英]MSAccess: Diff Two Tables?
我有一個任務來比較2個MSAccess表。 它們的結構相同,來自第三方數據源的兩次連續導出,相隔1個月(n和n + 1)。 10K記錄,35個字段。
我不必知道哪個字段已更新,僅是記錄中發生了更改。 然后,我的進程將繼續相應地處理目標數據庫中的增量記錄。
我已經在n + 1數據中標識了插入和刪除。 這將是每月一次的練習。
對開始這項任務有什么建議嗎? 我寧願不比較逐字段,逐行。 也許相當於〜校驗和?
謝謝!
根據Erik的建議(上文),我可以確認逐個字段,逐行地遍歷表並執行比較非常快。 10K行x 33場= 1-2秒
我需要進行的一項調整是考慮n或n + 1表中插入或丟失的行。 我只是在[ID]上加入了2個表,消除了所有未對齊的情況,然后逐步遍歷了結果記錄集,比較了兩對列。
Private Sub Command0_Click()
Dim strSQL As String
Dim rs As DAO.Recordset
Dim n, i, j As Integer
' Join the 2 tables into a single recordset, side-by-side
strSQL = "SELECT TestData.*, TestData2.* FROM TestData " & _
"INNER JOIN TestData2 ON TestData.[ID] = TestData2.[ID];"
Set rs = CurrentDb.OpenRecordset(strSQL)
'column-by-column, row-by-row, compare pairs of columns
n = rs.Fields.Count / 2
For i = 0 To n-1
j = i + n
If Not rs.BOF And Not rs.EOF Then
rs.MoveFirst
While (Not rs.EOF)
If Not (Nz(rs.Fields(i)) = Nz(rs.Fields(j))) Then
Debug.Print "ID " & rs.Fields(0) & " | " & rs.Fields(i).Name & " | " & rs.Fields(i) & " <> " & rs.Fields(j)
End If
rs.MoveNext
Wend
End If
rs.MoveFirst
Next i
MsgBox "all done"
rs.Close
Set rs = Nothing
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.