You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何无需循环批量将5个CSV文件合并为DolphinDB表?

嘿,这个问题我太熟悉了!DolphinDB本身就提供了无需循环的高效批量加载方案,完美解决你的痛点,性能比手动循环加载高出不少。下面给你详细拆解几种实用方法:

方法1:直接用loadText批量加载(最简单高效)

DolphinDB的loadText函数原生支持批量处理多个CSV文件,根本不用写循环。你有两种方式指定文件:

  • 通配符匹配:如果你的5个CSV文件名有规律(比如data_1.csv到data_5.csv),直接用通配符一次性匹配所有目标文件:
// 替换成你的文件目录和通配符规则
mergedTable = loadText("/your/data/directory/data*.csv")
  • 路径数组传入:如果文件名没有规律,就把所有文件的完整路径放进数组里传给函数:
filePaths = [
    "/your/data/directory/fileA.csv",
    "/your/data/directory/fileB.csv",
    "/your/data/directory/fileC.csv",
    "/your/data/directory/fileD.csv",
    "/your/data/directory/fileE.csv"
]
mergedTable = loadText(filePaths)

这种方式是DolphinDB底层并行处理的,会自动利用多线程同时加载多个文件,最后合并成一个内存表,效率比单文件循环加载高很多。

方法2:用loadTextEx直接写入分区表(适合长期管理)

如果之后你需要对合并后的表做分区存储(比如按时间、ID字段分区),可以用loadTextEx一步完成批量加载+分区表写入,省去后续转表的步骤,效率同样拉满。

示例代码(假设按user_id字段做值分区):

// 先创建分布式数据库(如果还没创建)
db = database("dfs://merged_csv_db", VALUE, 1000..9999) // 这里的分区范围根据你的数据调整
// 批量加载CSV并写入分区表,第三个参数是分区字段名
loadTextEx(db, "merged_table", "user_id", "/your/data/directory/data*.csv")

加载完成后,你直接得到一个分布式分区表,后续的查询、数据维护都会更高效。

额外优化小技巧

  • 确保所有CSV文件的列名、数据类型完全一致,不然批量加载会报错;
  • 如果文件过大担心内存不足,可以调整DolphinDB的maxMemoryUsage参数,或者开启内存映射(默认已开启);
  • 要是CSV有特殊格式(比如自定义分隔符、特殊引号),可以在函数里指定参数:
// 比如用竖线做分隔符,单引号做引号符
mergedTable = loadText("/your/data/directory/data*.csv", delimiter="|", quoteChar="'")

内容的提问来源于stack exchange,提问作者dylanlu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:21:58