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

问题描述 投票:0回答:1

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

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

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

database vba csv ms-access
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.