Mam dzisiaj dobry dzień, to Ci to napisze, ale to ostani raz dalej już tylko naprowadzam, dla plików które podałeś jest jeden problem którego nie bierzesz pod uwagę, w przypadku łączenia wierszy masz w każdym z nich pustą linię, najprościej to przekopiować te CSV do mdb, dodac id i posiłkować się left joinem, jednak dla ilości które opisujesz, Access nie wydoli, albo przynajmniej będzie działał baaardzo długo.
Skrypt
' Uruchom w trybie 32 bit
Dim fso,shell,mdbFile
dim con
Set fso = CreateObject("Scripting.FileSystemObject")
Set shell = CreateObject("WScript.Shell")
If Instr(WScript.FullName, "\System32\") And fso.FolderExists("C:\Windows\SysWow64") Then
shell.Run "C:\Windows\SysWow64\wScript.exe """ & wscript.scriptFullName & """"
Wscript.quit
End If
'Zmienne do skryptu
fullPath = fso.GetParentFolderName(fso.GetFile(Wscript.ScriptFullName))
mdbFile = fullPath & "\wynik.mdb"
GenerujPlikJS
Sub GenerujPlikJS()
'Przygotuj dane do porównania
'Stwórz mdb
CreateNewMDB mdbFile, 5
'połącz się z plikiem
Set con = CreateObject("ADODB.Connection")
con.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & mdbFile
'skopiuj csv do mdb
KopiujDaneZCSV "tabela1.csv", "t1"
KopiujDaneZCSV "tabela2.csv", "t2"
'Stworz plik JS
genJS
'Posprzątaj
con.close
set con = Nothing
fso.DeleteFile mdbFile
End Sub
Sub genJS()
SQL = "SELECT t2.* " & _
" FROM t2 left join t1 on iif(isnull(t1.kolumna_1),"""",t1.kolumna_1) = iif(isnull(t2.kolumna_1),"""",t2.kolumna_1) and " & _
" iif(isnull(t1.kolumna_2),"""",t1.kolumna_2) = iif(isnull(t2.kolumna_2),"""",t2.kolumna_3) and " & _
" iif(isnull(t1.kolumna_3),"""",t1.kolumna_3) = iif(isnull(t2.kolumna_3),"""",t2.kolumna_3)" & _
" where t1.id is null"
set rst = con.Execute(SQL)
Set OutputFile = fso.CreateTextFile(fullPath & "\wynik.js")
i=0
Do Until rst.eof
OutputFile.WriteLine("kwerenda[" & i & "]={" & _
chr(34) & "znaleziony rekord" & chr(34) & ":" & _
chr(34) & rst.fields.item("kolumna_1") & chr(34) & "," & _
chr(34) & rst.fields.item("kolumna_2") & chr(34) & "," & _
chr(34) & rst.fields.item("kolumna_3") & chr(34) & _
"};")
i=i+1
rst.movenext
Loop
rst.Close
OutputFile.Close
End Sub
Sub KopiujDaneZCSV(FileName, destTable)
Dim SQL
With con
'wgraj dane do tabeli
SQL="SELECT * into " & destTable & " FROM [Text; DATABASE=" & fullPath & "\].[" & filename & "]"
.Execute SQL
'dodaj id
SQL = "ALTER TABLE " & destTable & " ADD COLUMN ID COUNTER"
.Execute SQL
End With
end sub
Sub CreateNewMDB(FileName, Format)
Dim Catalog
Set Catalog = CreateObject("ADOX.Catalog")
Catalog.Create "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Jet OLEDB:Engine Type=" & Format & _
";Data Source=" & FileName
End Sub
dla danych które dałeś wynik to:
kwerenda[0]={"znaleziony rekord":"1","1","c"};
kwerenda[1]={"znaleziony rekord":"f","1","/"};