如何处理大型 csv 文件或分块读取大型 CSV 文件

2024-04-16

我有非常大的 csv 文件,我正在尝试迭代它们。我正在使用 opencsv,我想使用 CsvToBean,以便我可以动态设置数据库中的列映射。我的问题是如何在不获取整个文件并将其放入列表中的情况下执行此操作。我正在努力防止记忆错误。

我目前正在将整个结果集传递到一个列表中,如下所示。

List<MyOption> myObjects = csv.parse(strat, getReader("file.txt"));

for (MyObject myObject : myObjects) {
    System.out.println(myObject);
}

但我发现了这个迭代器方法,我想知道这是否只会迭代每一行而不是一次迭代整个文件?

Iterator myObjects = csv.parse(strat, getReader("file.txt")).iterator();

while (myObjects.hasNext()) {
    MyObject myObject = (MyObject) myObjects.next();
    System.out.println(myObject);
}

所以我的问题是迭代器和列表有什么区别?


增强的 for 循环 (for (MyObject myObject : myObjects))是使用Iterator(它要求返回的实例csv.parse(strat, getReader("file.txt"))实施Iterable接口,其中包含一个iterator()返回一个方法Iterator),因此两个代码片段之间没有性能差异。

P.S

在第二个片段中,不要使用原始Iterator类型、用途Iterator<MyObject> :

Iterator<MyObject> myObjects = csv.parse(strat, getReader("file.txt")).iterator();

while (myObjects.hasNext()) {
    MyObject myObject = myObjects.next();
    System.out.println(myObject);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何处理大型 csv 文件或分块读取大型 CSV 文件 的相关文章

随机推荐

  • 无法将必备组件放在与我的应用程序相同的位置

    我使用 VS 2013 我希望 sql server 2012 express localdb 与我创建安装程序时的应用程序位于同一位置 因此 在项目属性 gt 发布 gt 先决条件中 我选择第二个选项 从与我的应用程序相同的位置下载先决条
  • 块局部变量的语法

    我对定义块局部变量的良好风格感到困惑 选择是 选择A method that calls block v w puts v w 选项B method that calls block v w puts v w 当我希望本地块具有默认值时 混
  • 分离 CodeIgniter 配置文件 Git 以便公开发布

    我即将启动一个基于 CodeIgniter 的项目 并计划使用 Git 作为我们的 DVCS 我将与其他一些开发人员合作 中央 原始 服务器是私人托管的 但我也想开源它 稍后将代码发布到Github 我的问题是 有没有办法在 Git 中分离
  • 轻量级加密密钥交换协议

    我有一个嵌入式系统通过 HTTP 将数据发布到 JSON REST 服务 我目前正在使用 HMAC SHA1 进行身份验证 方式与亚马逊AWS http docs amazonwebservices com AWSSimpleQueueSe
  • 为什么 Facebook 不合并它的 CSS/JS 文件?

    我很好奇为什么 Facebook 开发人员选择不将他们的脚本和样式表合并到单个文件中 相反 它们通过 CDN 按需加载 Facebook 显然是一个非常复杂的应用程序 我可以理解这种模块化如何使 Facebook 更易于维护 但是通常的优化
  • Python:将目录及其子目录中的所有文件名写入文本文件

    我的问题如下 我想列出目录及其子目录中的所有文件名 并将输出打印在 txt 文件中 现在这是我到目前为止的代码 import os for path subdirs files in os walk Users user Desktop T
  • 文件正在被分配一个 //# sourceMappingURL 但已经有一个

    我只是注意到 Firefox 控制台为我的项目中的每个 js coffee 文件 甚至是包 输出以下错误 file is being assigned a sourceMappingURL but already has one Chrom
  • 在 R 中将数字时间转换为日期时间 POSIXct 格式

    我有一个数据框 其中包含已读入 R 的日期时间列 时间值显示为数字时间 如下面的数据示例所示 我想将它们转换为日期时间 POSIXct 或 POSIXlt 格式 以便可以查看日期和时间 tdat lt c 974424L 974430L 9
  • LinkedIn 分享 API-v2 返回炒股

    我对 LinkedIn Shares API 的逻辑完全感到困惑 因为我从有关共享的文档中读到的内容LinkedIn API 共享文档 https developer linkedin com docs guide v2 shares sh
  • javascript正则表达式验证范围内的年份

    我有年份的输入字段 我需要一个正则表达式来验证它 我有这样的代码 12 d d d 但我只想允许验证特定范围内的年份 例如 1990 2010 我该怎么做 编辑 范围必须是 1950 2050 尝试这个 1990 2010 199 d 20
  • 如何使用 Selenium 和 C# 将 Cookie 保存为字符串?

    到目前为止 我使用以下代码实现了获取网站的所有 cookie 我想要的 我不需要也不想要特定的 cookie var cookies driver Manage Cookies AllCookies write full path txt
  • 将 Aiohttp 与代理一起使用

    我正在尝试使用异步从 url 列表 由 ids 标识 中获取 HTML 我需要使用代理 我正在尝试将 aiohttp 与代理一起使用 如下所示 import asyncio import aiohttp from bs4 import Be
  • OpenCV 2.4.2 中的错误“OpenCV 错误:错误标志”

    我刚刚开始尝试使用 OpenCV 并根据一本书编写了一个非常简单的小程序 问题是当我尝试编译它时 出现此错误 我会给你我所掌握的所有信息 我使用 Mac OS X 10 7 的 homebrew 安装了 openCV include
  • PHP找不到tmp目录

    我在 tmp 目录中创建文件的函数遇到问题 例如tmpfile and tempnam 他们似乎都无法写入 tmp 并返回 false upload tmp dir在 php ini 中设置 文件上传工作正常 在调试这个错误时我发现sys
  • 在文本矩阵中使用多个 CGAffineTransform

    我正在使用 Quartz 显示文本 这是我的代码 CGContextRef myContext UIGraphicsGetCurrentContext CGContextSelectFont myContext Helvetica 12 k
  • Assertj:如何按对象内容比较2个对象列表?

    给出以下 快速且缺失的 代码 class Pair int x int y List l1 Arrays asList new Match 1 2 new Match 1 3 new Match 2 3 List l2 Arrays asL
  • 如何在 Electron BrowserWindow 中查看 PDF?

    所以我有这个 Electron 应用程序 在一个 html 文件中 我链接了另一个脚本 该脚本为程序提供了一些实用功能 其中之一是 function openPDF filePath let pdfWindow new electron r
  • 是否可以使用多处理对一个 h5py 文件进行并行读取?

    我正在尝试加快从 h5py 数据集文件中读取块 将它们加载到 RAM 内存中 的过程 现在我尝试通过多处理库来做到这一点 pool mp Pool NUM PROCESSES gen pool imap loader indices 加载器
  • 在 Mac OS X 中获取进程创建通知

    我正在尝试为 Mac OS X 编写 kext 当任何进程启动时都会收到通知 在 Windows 中 您可以通过调用 PsSetLoadImageNotifyRoutine 并指定在进程启动时调用的回调来完成此操作 这是有记录的方式 它适用
  • 如何处理大型 csv 文件或分块读取大型 CSV 文件

    我有非常大的 csv 文件 我正在尝试迭代它们 我正在使用 opencsv 我想使用 CsvToBean 以便我可以动态设置数据库中的列映射 我的问题是如何在不获取整个文件并将其放入列表中的情况下执行此操作 我正在努力防止记忆错误 我目前正