MS Access VBA / SQL:导入CSV并与现有记录进行比较

时间:2018-01-04 00:52:20

标签: database vba csv ms-access

我需要将销售数据从外部源导入Access数据库。生成销售报告的系统允许我在指定的日期范围内导出数据,但该数据可能会因更新,报告的报告数据等而发生变化。我想循环遍历CSV的每一行并查看该行是否已存在。如果确实如此,请忽略它;如果它没有向销售表添加新记录。

除非我误解它,否则我不相信我可以使用DoCmd.TransferText,因为数据结构与我导入它的表不匹配 - 我只是想导入文件中的几个列

我最好的选择是什么(1)访问我文件中的数据以进行循环,以及(2)将给定行的内容与给定表进行比较以查看它是否已存在?

1 个答案:

答案 0 :(得分:1)

考虑直接使用Access SQL查询csv文件,选择所需的列并运行NOT IN / NOT EXISTS / LEFT JOIN ... NULL个查询以避免重复。

INSERT INTO [myTable] (Col1, Col2, Col3)
SELECT t.Col1, t.Col2, t.Col3
FROM [text;HDR=Yes;FMT=Delimited(,);Database=C:\Path\To\Folder].myFile.csv  t
WHERE NOT EXISTS
  (SELECT 1 FROM [myTable] m
   WHERE t.Col1 = m.Col1);       -- ADD COMPARISON FIELD(S) IN WHERE CLAUSE