加入 3 个 csv 文件

Posted

技术标签:

【中文标题】加入 3 个 csv 文件【英文标题】:Joining on 3 csv files 【发布时间】:2020-04-07 13:06:16 【问题描述】:

我需要从 3 个不同的 CSV 文件(Adres.CSV、ID.CSV 和 Regios.CSV)中检索数据并将其合并到 Excel 表格中。

这条 SQL 语句运行良好,

StrSQL = "SELECT ID.[ID], Adres.[Naam], Adres.[Adres], Adres.[Plaats] " _
         & "FROM Adres.CSV Adres INNER JOIN ID.CSV ID ON Adres.[Naam] = ID.[Naam];"

还有

StrSQL = "SELECT Adres.[Naam], Adres.[Adres], Adres.[Plaats], Regio.[Regio] " _
         & "FROM Adres.CSV Adres INNER JOIN Regios.CSV Regio ON Adres.[Plaats] = Regio.[Plaats];"  

但是当我把它们组合成

StrSQL = "SELECT ID.[ID], Adres.[Naam], Adres.[Adres], Adres.[Plaats], Regio.[Regio] " _
         & "FROM Adres.CSV Adres " _
         & "INNER JOIN Regios.CSV Regio ON Adres.[Plaats] = Regio.[Plaats]" _
         & "INNER JOIN ID.CSV ID ON Adres.[Naam] = ID.[Naam];"

我收到一个操作员缺失的错误消息。

我忽略了什么?

【问题讨论】:

【参考方案1】:

这里有两个问题:

    您在第 3 行和第 4 行之间缺少一个空格。 JET/ACE SQL 要求您在执行多个连接时使用括号。

这应该可以修复您看到的 sql 错误:

StrSQL = "SELECT ID.[ID], Adres.[Naam], Adres.[Adres], Adres.[Plaats], Regio.[Regio] " _
         & "FROM (Adres.CSV Adres " _
         & "INNER JOIN Regios.CSV Regio ON Adres.[Plaats] = Regio.[Plaats]) " _
         & "INNER JOIN ID.CSV ID ON Adres.[Naam] = ID.[Naam];"

您的字符串最终以...Regio.[Plaats]INNER JOIN ID.CSV... 进行评估。缺少空格会导致 sql 解析器错过您的第二个 INNER JOIN

【讨论】:

恐怕我们还没到那里,我又收到一条缺少操作员的消息:link 我忘记了 JET SQL 要求您在执行多个连接时使用括号。我更新了我的答案,不太确定我的括号是否在正确的位置。试一试。 啊,一百万,就是这样!我一定要把它写下来!!! 很高兴为您提供帮助。如果对您有帮助,请考虑接受此答案:-)

以上是关于加入 3 个 csv 文件的主要内容,如果未能解决你的问题,请参考以下文章

BASH:根据公共字段名称连接 2 个 CSV 文件

使用 Apache Drill 进行多表连接

如何在 R 中加入来自 2 个不同 csv 文件的数据?

使用python pandas加入多个CSV文件

Azure 流分析 - 加入 csv 文件返回 0 行

从 3 个 CSV 文件中排序和选择