我需要将外部源中的销售数据导入Access数据库。生成销售报告的系统允许我在指定的日期范围内导出数据,但该数据可能会因更新,报告的报告数据等而发生变化。我想循环遍历CSV的每一行并查看该行是否已存在。如果确实如此,请忽略它;如果它没有向sales表添加新记录。
除非我误解它,否则我不相信我可以使用DoCmd.TransferText,因为数据结构与我导入它的表不匹配 - 我只是在导入文件中的几个列。
什么是我最好的选择(1)访问我的文件中的数据循环,以及(2)比较给定行的内容与给定的表,看它是否已经存在?
考虑直接使用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