查看类别

将多个 CSV 文件合并到一个表格中

19 分钟阅读

CSV文件夹连接器

将多个 CSV 文件合并到一个表格中

无需再手动拼接导出文件。只需将查询流指向文件夹,其中的所有 CSV 文件就会合并成一个可查询的 SQL 表——新文件会自动加入,而且您仍然可以清楚地知道每一行数据来自哪个文件。

数千个文件 新文件自动加入 货币保持不变 未上传任何内容。
报告销售
1月.csv 二月.csv mar.csv + 33 个其他
一张桌子
选择区域,
       总和(收入)
来自销售
按地区分组;

Query Streams 是一个安全的实时数据库集成平台,它将整个文件夹的 CSV 文件转换为一个实时 SQL 表,您可以从 Microsoft Excel、Google Sheets、Airtable 和您的 AI 助手进行查询。 了解更多信息,请访问 QueryStreams.com免费注册 几分钟内即可合并您的第一个 CSV 文件文件夹。

合并 CSV 文件看似简单,但实际操作起来却并非易事。三个文件复制粘贴就够了;三十个文件花一个下午就能搞定;三百个文件就需要编写脚本维护;三千个文件就变成了一个无人愿意维护的数据管道。

尴尬的是,这项工作永远没有结束的时候。明天又会有新的导出数据发布,所以你今天合并的所有内容都已经过时了。 CSV文件夹连接器 它的解决方法是根本不生成合并文件。它将文件夹实时地呈现为一个 SQL 表。添加文件后,下次同步时文件就会直接出现在表中。

导出文件夹
sales_2026_06.csv sales_2026_07.csv sales_2026_08.csv 明日文件
一个 SQL 表
销售 每一列,每个文件 每行 _source_file 已包含

这与通常合并 CSV 文件的方法有何不同

合并 CSV 文件的方法有很多种。关键在于最终结果如何。 合并工件 变质的,或者 实时画面 并非如此。

方法保持最新这需要花费你多少钱?
在 Microsoft Excel 中复制和粘贴 每次都需要手动操作,而且行数限制大约只能生成一百万行。
Power Query“从文件夹” 刷新时 它存在于一个工作簿中,需要刷新,并将每一行加载到文件中。
Python 或 PowerShell 脚本 当它运行时 有人拥有它、安排日程和调试它——通常是编写它的人。
在线 CSV 合并 你把数据上传到陌生人的服务器上。如果是商业用途,那就到此为止了。
查询流 CSV 文件夹 永远 不会进行任何合并、上传或复制操作——而是直接查询文件夹所在的位置。

另一个实际区别在于覆盖范围。Power Query 合并操作仅存在于拥有它的工作簿中。而 Query Streams 连接器则是一个数据源,因此同一个合并后的表格可以同时在 Microsoft Excel、Google Sheets、Airtable、Smartsheet、Nova AI 和您的 AI 助手中使用——而且它 连接到您现有的数据库 和其他桌子一样。

第一次同步时会发生什么

查询流最多可以对文件夹中的 64 个文件进行采样,并找出它们必须达成一致的三件事: 字符编码, 这 方言 (分隔符、引号字符、转义字符、是否存在标题行)以及 列及其类型. 这种约定的形状就成了桌子的定义,并且被固定下来——写下来,从此以后就受到保护。

必须达成一致,而非默认。如果一半文件以逗号分隔,一半以分号分隔,连接器将拒绝固定,并告知您哪些文件不一致以及不一致的原因,而不是选择其中一个文件并悄悄丢弃其余文件。类型也同样适用:如果 订单ID 在大多数文件中是一个数字,在一个文件中是一个文本,这是一个命名的拒绝,而不是一个无声的施放。

一旦文件被固定,所有文件都会严格按照该定义进行读取。不符合固定类型的行不会被强制转换或跳过——而是会被暂时搁置,这将在下文中详细介绍。

字符编码,是导致大多数合并失败的原因

如果您曾经合并过 CSV 文件,并且最终得到了以下结果: é 一个 é 如果显示的是错误的井号 (#),或者是一个变形的井号,那就说明你遇到了编码问题。这是因为大多数合并工具都假定所有文件都是 UTF-8 编码,而 Windows 应用程序导出的文件通常并非如此。

查询流会逐个检测文件的编码,而不是进行假设。它首先检查字节顺序标记 (BOM),然后尝试严格的 UTF-8 解码;如果解码失败,则将文件视为 Windows-1252 编码,因为大多数没有 BOM 的 Windows 导出文件实际上就是这种编码。对于无法直接读取的文件,会以 64 KB 的块大小通过转码器进行流式传输,因此 2 GB 的文件无需加载到内存中。

编码也被认为是来源
utf-8utf8现代导出、大多数数据库、任何网络生成的内容
cp1252windows-1252在 Windows 系统和较旧的业务线系统中,Microsoft Excel 的“另存为 CSV”功能
拉丁语-1latin1, iso-8859-1旧式欧洲系统和大型机提取
utf-16leutf-16, utf16Excel“Unicode文本”、PowerShell重定向
utf-16be-一些 Java 和大型机导出
Windows-1252 故意不将其视为 Latin-1。 这两种编码方式在大多数字节上都一致,但在包含智能引号、欧元符号和剑号的范围上存在分歧。如果将其中一种编码方式视为另一种,则弯撇号会变成一个不可见的控制字符——一个看起来像正确答案的错误答案。因此,Query Streams 将它们区分开来。

整个文件夹的编码必须保持一致。混合编码会生成一个包含检测结果的文件名称列表,您可以修复异常文件、将其排除或进行设置。 编码 明确规定每个文件的读取方式必须相同。

资金栏保持准确

这个错误很隐蔽,值得花点时间了解,因为它是合并 CSV 数据时出错的悄无声息的方式。

CSV 文件没有类型—— 19.99 它只有四个字符。大多数工具会将其推断为浮点数,而浮点数无法精确表示大多数十进制数值。将几十万行浮点货币数据相加,总和会偏差一两美分,而这种误差正是会计师而非你更容易发现的。

查询流会检查实际文本。当看似数值的列中的每个采样值都是小数点后不超过四位、小数点前不超过十四位的纯十进制数时,该列将被固定为文本。 精确的小数 而不是浮点数,文本在读取时直接解析为十进制数。然后,总数加起来精确到分。

而且,每个文件都会进行复查,而不仅仅是样本。 如果后续文件中某个值保留五位小数,连接器不会将其四舍五入以适应数据——该文件会被暂存并命名该列。金额的静默四舍五入被视为数据错误,而非格式问题。

当一个文件与其他文件不匹配时

导出文件夹会发生偏移。有人在九月份添加了一列,系统更改了日期格式,或者某个文件是从不同的工具保存的。当一个文件不再符合其固定格式时,它就会被错误地保存。 停放它的行未显示在表中,原因已记录,其他所有文件均正常同步。

表头已预先检查,因此原因很具体。您会得到“列” 折扣码 如果出现“列存在于表头但未存在于固定表中”的情况,而不是列数不匹配,则需要自行诊断。重复的表头名称、文件中曾经存在但现在已删除的列以及被截断的最后一行,都会以相同的方式被检测到。

哪些文件被扣留了,原因是什么?
SELECT relative_path, detail, occurred_at FROM files_events WHERE event_type = 'drift' ORDER BY occurred_at DESC;

部分写入的文件是一种值得了解的特殊情况。如果在同步运行时导出文件仍在追加数据,则最后一行将不完整。为了避免只导入已写入的行而导致文件看起来很短,系统会将整个文件暂时搁置,并在下次同步时,一旦文件大小不再变化,就完整地导入整个文件。因此,文件要么全部导入,要么全部导出,绝不会只导入或导出一半。

当文件夹确实包含多个布局时

有时文件格式本来就应该不同。例如,导出文件夹可能并排存放订单、退款和发货信息。与其强迫它们排列成一种格式,或者让你创建三个连接线,不如直接切换表格布局。 已置顶每个布局一张桌子查询流按文件实际拥有的列对文件进行分组,并为每个组提供自己的表,最多可有 25 个不同的布局。

表名来源于文件本身——共享的文件名模式会成为表名,因此一组 orders_2026_*.csv 文件会落入一个名为“ 命令名称在第一次分配时就固定下来了,因此您保存的查询中已引用的表不会在其下重命名。

按布局拆分列,而不是按方言拆分。 一个连接器仍然使用单个分隔符、引号字符和编码读取每个文件,因此对于不一致的文件,连接器会读取到不同的分隔符、引号字符和编码。 那些 即使在这种情况下,仍然会拒绝。一个文件夹中混合了以逗号和分号分隔的文件需要两个连接符,或者一个用于分隔它们的文件模式。

每一行都记住它来自哪个文件。

这就是合并文件会丢失而你最终总是想要保留的信息。合并一千个 CSV 文件很容易;难的是找出这千个文件中哪一个导致了数据错误。

CSV 文件夹表中的每一行都包含一个 源文件 列名称为文件来源,以及 _row_id 这两个字段在整个表中是唯一的,并且按其在文件中的位置排序。它们都可以像其他任何列一样进行查询。

找出导致总数减少的文件
SELECT _source_file, COUNT(*) AS row_count, SUM(revenue) AS revenue FROM sales GROUP BY _source_file ORDER BY _source_file;

因为整个文件夹就是一个表,所以跨文件查询就变成了普通的 SQL。将本月与去年同期进行比较就是一个…… 地点 条款,而不是并排打开两个工作簿的练习。

每个 CSV 设置及其更改时机

这些是 CSV 文件夹特有的设置。所有文件夹类型共享的设置——根文件夹、包含和排除模式、扫描间隔、哈希、防护规则和清单覆盖——已记录在案。 文件集连接器指南.

首先要明白的重要一点是: 所有这些都会在首次同步时被检测到并固定。您只需设置一个选项即可覆盖自动检测,或强制统一管理一个并非完全统一的文件夹。一旦设置固定,系统就不会再为每个文件重新猜测该设置——这正是为什么当文件不再匹配时,系统会将其暂时搁置并报告,而不是悄悄地以其他方式重新读取。

表名

必填。这是您在 SQL 中对合并表的名称。 销售, 货物无论文件夹实际包含什么文件,名称都应该是字母、数字和下划线,但不能以数字开头。现在就选择一个有意义的名称:每次保存查询、Nova 问题和电子表格刷新都会使用这个名称。

分隔符

默认值:逗号。 当您的文件实际上并非以逗号分隔时,请进行此设置——分号在欧洲导出文件中几乎是通用的,制表符在数据库工具中很常见,而竖线则出现在大型机提取文件中。请直接输入该字符。 ;|对于标签页来说,大多数导出功能都支持检测,所以你很少需要手动操作。

为什么你要手动覆盖而不是让它检测: 检测需要采样文件之间保持一致。如果一个文件夹中混杂着一些以逗号分隔的文件和一些以分号分隔的文件,检测将拒绝处理,而不是选择正确的分隔符。明确设置分隔符可以告诉检测哪个是正确的,这样,不匹配的文件就会被排除在外,并给出明确的原因,而不是阻塞整个连接。

引用字符

默认值:双引号。 这是围绕包含分隔符的字段的字符——原因 “史密斯,约翰” 保持为一个字段。仅在导出使用单引号的特殊情况下才需要更改此设置。如果您发现地址被拆分到多个列中,则需要检查此设置。

第一行是标题行

默认值:开启。 对于人工或报表工具生成的数据,请启用此功能。对于无表头提取的数据,请禁用此功能,此时列将变为位置信息,并生成通用名称,您可以使用清单覆盖来重命名这些名称。

错误设置很容易出错,而且无害:如果错误地启用,第一行数据会消失,变成列名;如果错误地禁用,真正的表头会显示为一行文本,并且强制所有列都显示为文本。

编码

默认值:自动检测这几乎总是正确答案——它会检查字节顺序标记,验证是否为严格的 UTF-8 编码,如果是则回退到 Windows-1252 启发式编码,然后确定结果。明确的选项包括 UTF-8、Windows-1252 (cp1252)、UTF-16 LE 和 Latin-1。

何时需要覆盖: 当检测因采样文件不一致而拒绝时,而你知道哪个才是正确的。 UTF-16 LE 值得特别了解的是——它是 Excel 在选择“Unicode 文本”时写入的内容,其文件以字节开头,对于不了解情况的读者来说,这些字节看起来完全是空的。

一个特意区分:Windows-1252 和 Latin-1 是 它们被视为同一件事,因为它们对智能引号、欧元符号和破折号的适用范围存在分歧。选错其中一个会导致…… 欧元 将其写入控制字符而不是引发错误,因此请选择导出器实际写入的字符。

空字符串

默认值:无。 每行一个值。每种导出工具都有自己表示“无值”的方式—— 无效的, 不适用, 不适用, -, #不适用, (没有任何) ——如果没有这个,它们就会以文字的形式出现。

它为何比表面看起来更重要: 单个 不适用 在数值列中,强制整列转换为文本,然后 和() 停止工作后,排序将改为按字母顺序排列。此处列出的占位符通常是区分数值列和文本列的关键所在。

日期格式

默认值:无 — 日期是推断出来的。当日期和月份顺序不明确时,请设置此项,这是 CSV 合并中最容易被忽视的错误: 03/04/2026 日期是四月三日还是三月四日,取决于是谁写的,文件中没有说明是哪一天。

常见日期格式模式
%Y-%m-%d 2026-08-24 %d/%m/%Y 2026年8月24日(英国、欧盟日期优先) %m/%d/%Y 2026年8月24日(美国月份优先) %d-%b-%Y 2026年8月24日 %Y%m%d 20260824

格式与其他所有内容一样都是固定的,因此,如果文件不再符合该格式,系统会将其暂存并上报,而不是用不同的数字解读方式重新解释。这正是我们想要的行为——悄悄反转日期远比事先告知的文件糟糕得多。

表格布局

默认:一个固定布局该方法要求作用域内的所有 CSV 文件都共享相同的列。切换到 每个布局一张桌子 当文件夹随着时间的推移确实积累了不同的列集,而你想要保留所有这些列集而不是拒绝它们时——每个不同的布局都有自己的表格,最多 25 个。

更改此设置会重新采样文件夹并重建,这是设计使然。已使用的表名会被保留,因此现有的已保存查询仍然有效。

没有任何作用的设置会被视为漏洞,而不是便利功能。 连接器无法识别的选项名称会被直接拒绝,并列入它接受的名称列表中——因为一个默默无闻、什么也不做的设置看起来和正在工作的设置完全一样。

设置

您需要一个 Query Streams 帐户,并在可以访问该文件夹的位置(例如服务器、已映射共享的工作站或您自己的笔记本电脑)安装网络代理。CSV 文件夹连接器需要 网络代理 2.6 或更高版本.

  1. 从此处安装代理。 下载页面 如果它还没有运行的话。
  2. 在门户中,添加数据连接器并选择 CSV文件夹.
  3. 输入代理计算机上显示的文件夹路径。添加文件模式,例如: 销售_*.csv 如果文件夹中包含的内容超过了您想要合并的内容。
  4. 除非您已经知道文件夹不一致,否则请将编码和分隔符设置为自动。
  5. 保存。代理程序会对文件夹进行采样,确定文件夹形状,并报告找到的文件数量以及各列的内容。
  6. 打开查询构建器,选择连接器并查询表,或者让 Nova AI 为您编写 SQL。
使用代理看到的路径。 您桌面上映射的驱动器号在运行代理的服务器上无法解析。请使用 UNC 路径,例如: \\fileserver\exports\sales或者代理自身机器上的本地路径,并检查代理运行所用的帐户是否可以读取它。

合并后的表格可以放在哪里?

  • 微软Excel和谷歌表格 — 从加载项运行查询,合并后的行将出现在工作表中,并可根据需要刷新。
  • Airtable、Smartsheet、Baserow、SeaTable 和 Anvil — 定时同步会将合并后的数据推送到您的团队已经使用的工具中。
  • 新星人工智能 — 用简单的英语提出问题,并通过图表获取每个文件中的 SQL。
  • Claude、Cursor、ChatGPT 和 Grok — 通过 Query Streams MCP 服务器,AI 助手可以直接查询文件夹。
  • REST API — 将合并后的表格转换为合作伙伴或内部应用程序的端点。

由于它是一个普通的连接器,合并后的 CSV 表可以与您的其他数据连接。一个包含发货导出数据的文件夹可以连接到 PostgreSQL 中的订单表和 Stripe 支付系统,只需一条只读语句即可完成连接,无需事先将任何数据加载到数据仓库中。

常见问题

如何将多个 CSV 文件合并到一个表格中? +
在可以访问该文件夹的计算机上安装 Query Streams 网络代理,并添加一个 CSV文件夹 连接器,并为其提供文件夹路径以及可选的文件模式,例如 销售_*.csv每个匹配的文件都会成为同一个 SQL 表的一部分。不会将任何文件合并到新文件中——查询的是文件所在的文件夹,因此后来添加的文件会自动包含在内。
一次最多可以合并多少个 CSV 文件? +
默认支持 10 万个文件,最高可达 200 万个。单个文件默认读取大小不超过 512 MB,行数不超过 200 万行,上限更高。与电子表格不同,合并后的表格实际上没有行数限制——您是在查询数据库引擎,而不是填写单元格。
所有 CSV 文件都需要相同的列吗? +
对于默认布局,是的。查询流会固定一种形状,并在采样文件不一致时拒绝匹配而不是进行猜测,这样您就可以立即发现问题,而不是稍后才发现一半的行都丢失了。如果文件夹确实包含多种类型的文件,请切换到 每个布局一张桌子 每组形状相似的文件都有自己的表格,最多可有 25 个。
它能处理以分号、制表符或竖线分隔的文件吗? +
是的。分隔符、引号和转义字符都会自动检测,您可以使用以下方式覆盖检测到的值: 分隔符 如果选错了,则会报错。唯一的要求是一致性:单个连接器会读取所有使用相同分隔符的文件,因此,如果文件夹中混合了逗号和分号分隔符的文件,则需要两个连接器,或者使用一个文件模式来分隔它们。
为什么我在其他地方合并 CSV 文件时,带重音符号的字符显示不正确? +
因为大多数工具都假定使用 UTF-8 编码,而许多导出文件并非如此。Query Streams 会检测每个文件的编码——首先是字节顺序标记 (BOM),然后严格检查是否为 UTF-8,如果是 UTF-8 则回退到 Windows-1252,因为大多数没有 BOM 的 Windows 导出文件实际上就是 Windows-1252 编码。Query Streams 支持 UTF-8、Windows-1252、Latin-1 和两种 UTF-16 变体,您可以使用 `--proxy-type` 显式指定编码。 编码.
货币价值会保持准确吗? +
是的。如果列中的每个采样值都是最多四位小数的纯十进制数,则该列会被精确地存储为十进制数,而不是浮点数,这样即使数值较大,也不会出现几分钱的误差。每次读取文件时都会重新检查,如果某个值无法精确存储,则会将该列的名称写入文件,而不是默默地进行四舍五入。
当一个新的 CSV 文件添加到文件夹中时会发生什么? +
它会在下次同步时自动加入表,无需重新配置。系统只会读取新增和已更改的文件,因此一次新的导出不会导致其他 49,999 个文件被重新解析。删除文件会从表中移除其对应的行,并且删除操作会被记录下来。 文件事件.
我可以知道哪一行数据来自哪个文件吗? +
每一行都包含一个 源文件 列名称及其文件和一个 _row_id 表格中各部分均不相同。分组依据 源文件 它会显示每个文件的行数和总数,这通常是找到导致数字显示错误的导出文件的最快方法。
我的CSV文件是已上传还是已修改? +
都不是。文件会保留在原地,不会被写入、移动或重命名。解析后的数据会以加密形式缓存在与网络代理相同的机器上,只有查询返回的行才会通过代理自身建立的出站连接离开您的网络。查询是只读的,并且严格执行只读策略——任何可能写入的操作都会在运行前被拒绝。

开始

停止手动合并 CSV 文件

只需将代理指向文件夹一次,即可将所有导出文件作为一个单独的表格进行查询——无论是来自 Microsoft Excel、Google Sheets、Airtable 还是您的 AI 助手。新文件会自动添加,您的数据永远不会离开您的网络。

相关指南: 如何使用 SQL 查询文件夹中的文件 | 下载查询流代理 | 所有文件集连接器指南

类别:文件集连接器

标签:合并 CSV 文件、合并多个 CSV 文件、将多个 CSV 文件合并为一个、CSV 文件夹连接器、使用 SQL 查询 CSV、CSV 转 Excel、CSV 编码

元描述:将多个 CSV 文件合并到一个实时 SQL 表中。无需合并,无需上传,新文件自动加入。

更新 2026 年 8 月 27 日

Powered by BetterDocs