Tag: csv

使用Bluebird将所有csv文件读入节点j中的1个JSON对象数组

我在nodeJS中使用Promise Bluebird。 我想将特定目录中的所有CSV文件读入1个JSON对象数组并显示结果。 步骤是: 读取目录以获取文件名(调用readDir函数) 使用循环来读取每个CSV文件(lodash forOwn循环),并将内容存储在JSON对象数组(调用函数ReadFile) 将JSON对象数组(使用Lodash分配函数)与主JSON对象数组(名为data_Warehouse)合并,以便将所有数据存储到1个JSON对象数组中。 完成将所有CSV文件数据保存到JSON对象数组data_Warehouse后,在console.log中显示data_Warehouse(.then部分)。 检查是否都按照计划,我把代码之间的console.log。 问题是这个过程不是按照正确的顺序完成的。 我试图使用蓝鸟,但它仍然没有按照计划去。 你能帮我解决这个问题吗? 这是我的输出: 输出:负载\ Book1.csv 输出:负载\ Book2.csv 输出:负载\ Book3.csv 结果:{} 加载\ Book1.csv 101 load \ Book2.csv 102 加载\ Books.csv 103 正如你所看到的,行输出“results”应该是最后一个,但是在JSON对象数组data_Warehouse为空的过程中是较早的。 var Converter = require("csvtojson").Converter; var converter = new Converter({}); var _ = require('lodash'); var r = require('rethinkdbdash')(config.rethinkdb); var fs = Promise.promisifyAll(require('fs')); readDir() .then(function(v){ […]

使用从CSV扫描URL的节点请求下载图像

请原谅,因为代码是混乱的。 我还在学习。 我需要使用CSV文件中的URL扫描下载图像。 然而,我有2000+的URL与相同的域名,我不认为服务器将让我拉动一切,因此我总是得到一些图像后的错误。 我需要解决的问题 – 1)如何确保图像完全下载,然后只有代码移动到下一个URL 2)如何编写更好的代码 你的帮助表示赞赏。 谢谢 var csv = require('fast-csv'); var Promise = require('bluebird'); var fs = require('fs'); var request = require('request'); var path = "test.csv"; var promiseCSV = Promise.method(function(path, options) { return new Promise(function(resolve, reject) { var records = []; csv .fromPath(path, options) .on('data', function(record) { records.push(record); }) .on('end', function() […]

在csv / xlsx文件中写入图像的正确方法是什么?

我试图写一个图像,到一个CSV文件。 该脚本写入文件,但图像的内容是混乱的。 长序列 \u0000\u0010JFIF\u0000\u0001\u0001 。 有人可以指出我在编码丢失什么,或者我应该做的东西吗? 要testing: mkdir so-38711430; cd so-38711430; npm init -y; npm i -S lodash json2csv; mkdir so-38711430; cd so-38711430; npm init -y; npm i -S lodash json2csv; 'use strict'; const _ = require('lodash'); const json2csv = require('json2csv'); const fs = require('fs'); let rows = [ { 'id': 1, 'name': '12323', }, […]

错误写入文件fsstreamNodeJS

目的 使用csv-write-stream和fsstream将一个非常大的数组写入文件。 背景 我有一个小型应用程序,它将大量数据(数千个条目)写入CSV文件。 为了达到这个目的,我使用前面提到的库,这只不过是fsstream的一个掩码(一个方便)。 但是,应用程序在运行时崩溃,我不知道为什么。 错误 文件被创build并且stream开始写入,但是在执行期间我总是有同样的错误: events.js:141 throw er; // Unhandled 'error' event ^ Error: write after end at writeAfterEnd (_stream_writable.js:166:12) at WriteStream.Writable.write (_stream_writable.js:211:5) at ondata (_stream_readable.js:536:20) at emitOne (events.js:77:13) at emit (events.js:169:7) at Readable.read (_stream_readable.js:368:10) at flow (_stream_readable.js:751:26) at WriteStream.<anonymous> (_stream_readable.js:609:7) at emitNone (events.js:67:13) at WriteStream.emit (events.js:166:7) 码 我知道这个错误是与这段代码有关的: let writer = […]

如何用koajs下载csv文件

我使用koajs作为nodejs的框架。 我尝试创buildCSV数据,并将其响应给客户端,但不工作 let fields = ['code', 'status']; let p = new Promise((resolve, reject) => { json2csv({data: data, fields: fields }, (err, response) => { if (err) { reject(err); } else { resolve(response); } }); }); return p.then(data => { let fileName = 'promotioncode-' + moment().unix(); ctx.response.attachment(fileName + '.csv'); ctx.response.type = 'application/ms-excel'; ctx.body = data; }) […]

NodeJSstream超过了堆

我正在尝试从〜400mb csv文件中按摩一些数据,并将其保存到数据库中进行本地查询。 这是免费提供的ip2location lite数据库,我试图导入它的数据库是embedded式nedb 。 require('dotenv').load() const fs = require('fs') const csv = require('csv-parse') const es = require('event-stream') const Datastore = require('nedb') const BatchStream = require('batch-stream') const db = new Datastore({ filename: process.env.DB_PATH, autoload: true }) const debug = require('debug')('setup') function massage ([ipLo, ipHi, cc, country, area, city, lat, lng]) { return { ipLo, ipHi, […]

循环二进制Float64Array文件 – NodeJS

我有100个CSV文件,每个约50.000.000行,每个包含3个单元格。 每行需要触发一个事件来做一些计算。 使用npm read-line lib,通过pipe道读取CSV,我可以每秒处理大约1000000个周期(1节点线程)。 但是这个过程做了很多步骤,只是为了得到一些数字 打开.csv文件stream 将每个块串联起来 在块中search新行\ n 将该行分割成一个数组(3个单元格) parseFloat每个单元格 所以要parsing它们甚至更快,我虽然将csv文件转换为二进制文件可以帮助。 所以我创build了一个二进制Float64Array缓冲区文件,因为单元格中的所有值都是浮点数。 let counter = 0 ;; rows.forEach(function (row) { row.forEach(function(cell) { buffer.writeDoubleLE(cell, counter++ * Float64Array.BYTES_PER_ELEMENT); }) }); writeStream.write(buffer) writeStream.end() 那么它只需要做这个步骤 打开.bin文件stream 将每个stream缓冲区块(chunk = 3个单元格)转换为ArrayBuffer到Array64Float fs.createReadStream(fileName, {highWaterMark: 24}) //.pause() .on('data', chunk => { //this._stream.pause(); this._bufferOffset = 0; this.emit('tick', new Float64Array(chunk.buffer, chunk.byteOffset, chunk.byteLength / […]

在本地服务器上读取和parsingnode.js中的csv

我试图打开一个csv文件,我本地存储在我的节点服务器上,从我的web应用程序(和浏览器 – 用于testing目的)。 它是一个快递服务器,但是当我尝试访问/打开文件在浏览器中的威盛绝对path,我得到“无法获得文件path错误”。 林不知道为什么我不能得到的文件,当path是正确的。 文件path如下所示http://localhost:8000/files/7e911083-d12c-e5f9-10d7-db8e5e955c51.csv ,我的服务器是打开的。 我如何查看浏览器中的CSV? 更不用说从networking应用程序访问。 谢谢

JSON在CSV到CSV

通过REST API端点,我获得了具有以下结构(CSV文件内的JSON)的相当大的CSV文件: A,B,C,D 1,2,3,{"E":1,"F":2,"G":3} 1,2,3,{"E":1,"H":2} 对于不同的工具,我需要一个平面结构的CSV(没有嵌套的JSON)。 所以,最后,我想有一个像这样的CSV。 A,B,C,E,F,G,H 1,2,3,1,2,3, 1,2,3,1,,,2 (虽然列标题看起来结构化,这是不重要的我的用例) 由于CSV文件相当大,我正在寻找一个相对高效的方式来做到这一点。 我将用JavaScript(Node.JS)写这个(因为这是用于脚本所有其他部分的语言)。 然而,现在我只是寻找一个理论的方式/伪代码来执行这样的事情。 据我所知,我可能不得不遍历CSV文件两次。 我第一次得到所有的JSON密钥。 第二次,我可以创build一个新的CSV文件并设置所有的值。 但是,我会正确地找出哪一列我必须写的价值? 或者是更高性能的“转换”CSV文件到一个循环中的对象数组,然后使用类似的CSVparsing器( http://csv.adaltas.com/ )将其转换回CSV?

延迟dynamictesting创build

我有一个很大的CSV文件,其中包含input和复杂计算的预期输出。 我想用这个文件作为testing我的计算器写在Node中的基础。 但是,似乎像Mocha和Vows这样的框架期望在CSV文件被读取和parsing后同步输出testing,而不是asynchronous输出。 我可以通过将CSV转换为JSON并将其包含在我的testing文件中来解决此问题,但我宁愿使用权威性的CSV文件,无论如何,我只是好奇如何处理这种情况。 谢谢。 基本方法现在(使用csvtojson ): const cases = []; csv() .fromFile('../testdata/test.csv') .on('json', (rowObj) => { // convert columns to inputs and expected cases.push(inputs: inputs, expected: expected); }) .on('end', () => { describe('Test cases', function() { cases.forEach((test) => { it(`${dynamicCaseName}`, () => { // do our calculation assert.equals(ours, test.theirs); }); }); }); });