当前位置: 首页 > 面试题库 >

将大型CSV转换为Node.js中的JSON /对象

蓬野
2023-03-14
问题内容

我正在尝试做的事情似乎不仅应该很简单地完成,而且应该是足够普通的任务,以至于可以使用简单的程序包来完成它。我希望获取一个大型CSV文件(从关系数据库表中导出),并将其转换为JavaScript对象数组。此外,我想将其导出到.json文件装置中。

CSV示例:

a,b,c,d
1,2,3,4
5,6,7,8
...

所需的JSON:

[
{"a": 1,"b": 2,"c": 3,"d": 4},
{"a": 5,"b": 6,"c": 7,"d": 8},
...
]

我已经尝试了几个节点CSV解析器,流媒体,自称CSV到JSON的库,但是似乎无法获得想要的结果,或者如果文件较小,它是否可以工作。我的文件大小接近1
GB,约有4000万行(这将创建40m个对象)。我希望它将需要流输入和/或输出以避免内存问题。

这是我尝试过的软件包:

  • https://github.com/klaemo/csv-stream
  • https://github.com/koles/ya-csv
  • https://github.com/davidgtonge/stream-convert(有效,但是它是如此之慢以至无用,因为我经常更改数据集。解析一个60 MB的csv文件花了将近3个小时)
  • https://github.com/cgiffard/CSVtoJSON.js
  • https://github.com/wdavidw/node-csv-parser(似乎并非旨在将csv转换为其他格式)
  • https://github.com/voodootikigod/node-csv

我正在使用Node
0.10.6,希望就如何轻松实现这一目标提出建议。最好自己滚动,但我不确定从Node的所有流功能开始,尤其是因为它们在0.10.x中更改了API。


问题答案:

尽管这还不是一个完整的答案,但是您可以将解决方案基于https://github.com/dominictarr/event-
stream
。自述文件的改编示例:

    var es = require('event-stream')
    es.pipeline(                         //connect streams together with `pipe`
      process.openStdin(),              //open stdin
      es.split(),                       //split stream to break on newlines
      es.map(function (data, callback) { //turn this async function into a stream
        callback(null
          , JSON.stringify(parseCSVLine(data)))  // deal with one line of CSV data
      }), 
      process.stdout
      )

之后,我希望每行上都有一堆字符串化的JSON对象。然后,需要将其转换为数组,您可以使用该数组并将其追加,到每行的末尾,在最后一行将其删除,然后在文件的开头和结尾处添加[]

parseCSVLine必须将功能配置为将CSV值分配给正确的对象属性。在传递文件的第一行之后,可以很容易地做到这一点。

我确实注意到该库未在0.10上进行测试(至少没有在Travis上进行测试),所以请当心。也许npm test自己在源上运行。



 类似资料:
  • 问题内容: 我有一个100M的CSV文件(实际上是许多单独的CSV文件),总计84GB。我需要将其转换为具有单个float数据集的HDF5文件。我在测试中使用 h5py 时没有任何问题,但是现在我无法在没有内存不足的情况下完成最终数据集。 如何在不必将整个数据集存储在内存中的情况下写入HDF5?我期望这里有实际的代码,因为它应该很简单。 我只是在研究 pytables ,但看起来数组类(与HDF5

  • 问题内容: 有谁知道是否有可以让我将XLS最好转换为JSON的应用程序? 我还将为CSV转换程序做准备,因为如果周围什么都没有的话,我可能最终不得不写自己。 问题答案: 这对我来说效果很好,不需要上传文件: https://github.com/cparker15/csv-to- json?files=1

  • 问题内容: 我尝试使用json格式的文件作为输入。这是示例数据的片段。 可以在r中使用这种复杂的json格式制作一个csv,以便更平滑地处理数据吗? 例如,有以下基本类别:基本信息照片创建者位置类别网址 可以制作带有basic_information.id,creator.id等子类别类别的csv文件吗? 问题答案: 在研究您的答案时,我在评论中张贴了一些链接,但现在我非常确信这是解决问题的方法。

  • 我应该使用什么API将Java对象转换为CSV。我可以使用google gson将java对象转换为CSV格式吗?

  • 问题内容: 我有一个JSON对象,我将其转换为并在此处进行一些处理。稍后,我想转换相同的缓冲区数据以转换为有效的JSON对象。 我正在研究Node V6.9.1 下面是我尝试过的代码,但是当我转换回JSON却无法打开该对象时遇到了。 所以我尝试使用检查方式打印整个对象 如果我尝试像数组一样读取它 我也尝试解析它抛出 我需要将其视为我创建的真实对象(我的意思是像上面声明的那样)。 请帮忙.. 问题答

  • 我正试图将下面的json转换成java bean,需要你的帮助 Sort.json 我的豆子看起来像 我的测试课是 我看到的错误是 请建议: