Tag: csv

如何使用pg-promise将数据下载为CSV文件?

db.any(query) .then(data => { //console.log("data: " + JSON.stringify(data)); res.json(data); //res.send("data: " + JSON.stringify(data)); }) .catch(error => { console.log("ERROR:", error) }); 是否有可能以CSV格式而不是JSON获取数据?

将JSON文件转换为nodejs中的CSV文件时出现UTF-8/16编码问题

我正在编写一个脚本来将带有中文的json文件转换为csv文件。 所有的转换工作,但中国的内容似乎出现编码问题。 如果我用Sublime打开转换的CSV文件,所有的中文单词都是正确的。 如果我用Excel (我的版本是2016)打开它,这些话没有一个是正确的。 另外,中文栏后面的下一栏信息部分将附加到未编码的中文。 如果我先用Sublime打开CSV文件,然后用带有BOM的UTF-8编码保存,则整个CSV文件在Excel中看起来是正确的。 我知道UTF-16 在Windows 10的Excel中可能会好得多,但是无论我怎么评论这个代码,都没有改变。 data = data.replace(/^\uFEFF/, ""); 这是我的整个代码。 var fs = require('fs'); enter code here`var json2csv = require('json2csv'); var Excel = require('exceljs'); var detectEncoding = require('jschardet'); var encoding = require("encoding"); fs.readFile('./input.json', function (err, data) { var charsetMatch = detectEncoding.detect(data); if(charsetMatch.encoding != "UTF-8") { data = encoding.convert(data, "UTF-8", charsetMatch.encoding).toString("utf8"); […]

将Papaparse行转换为对象

papaparse支持是否返回由标题列键入的对象实例数组? 例如,我有一个像这样的CSV文件: sku, location, quantity 'sku1', 'Chicago', 3 'sku2', 'New York, 4 我希望papaparse返回的数组看起来像这样: [{sku: 'sku1', location: 'Chicago', quantity: 3}, …] 这也应该是可能的: results[0].sku == 'sku1' results[1].quantity == 4

使用fast-csvparsingcsv文件

var fs = require('fs'); var csv = require('fast-csv'); var inputFile = "SampleCSVFile_2kb.csv"; fs.createReadStream(inputFile) .pipe(csv()) .on('data', function(data){ console.log(data); }) .on('end', function(){ console.log('Read finished'); }) 我的csv文件: hello,1,1,forty-two, yellow,brown,red,orange fs.createReadStream(inputFile) .pipe(csv()) .on('data', function(data){ console.log(data); }) .on('end', function(){ console.log('Read finished'); }) 我正在使用fast-csvparsing我的csv文件,但我无法看到任何输出,任何帮助将是伟大的

在node-csv-parser中调用node-mongodb-native:RangeError:超出最大调用堆栈大小

我使用node-csv-parser读取csv数据,并使用mongoose将它存储在mongodb中。 但是我试图加快导入,并且我想使用node-mongodb-native公开的本地保存方法进行评估,使用Model.collection以mongoose访问。 (这是我在Mongo总部的办公时间与一位蒙古工程师的build议)。 每次读入csv的新行时, node-csv-parser触发一个data事件。 在这个事件里面,我读了一行数据,从中创build一个新的数据点,并保存在mongo中。 我可以使用我的mongoose模型TestDataPoint在data事件内保存数据点。 但是,如果我尝试改为创build一个javascript对象的数据点,并保存使用TestDataPoint.collection.save ,我得到的错误: RangeError: Maximum call stack size exceeded 。 我已经尝试过以各种不同的方式调用本地保存,包括通过mongoose.connection.db.collection("testdatapoints")直接获取集合,并将其发送到由asynchronous模块提供的队列,但始终或多或less的相同的结果。 我可以在我的代码中的其他地方使用本地驱动程序成功保存数据点,甚至在csv导入的end事件中,也可以不在data事件中。 我也通过logging来确定,在我当前的设置(64位AMD处理器上的Ubuntu 12.04,8 GB RAM)上,代码在抛出堆栈错误之前迭代了154行csv,但没有数据写入数据库从这个data事件里面。 似乎无意中发生了某种recursion(?),或者也许是node-csv-parser和node-mongodb-native之间的某种错误。 为了澄清,我的(编辑/更新)示例代码如下,日志重复154次: about to call native save just called native save 然后说: in native save callback for dataPoint: 1 Native save failed, error:RangeError: Maximum call stack size exceeded in native save callback for […]

用Node.js和async.queue插入大的CSV到MongoDB中

我试图上传并插入大的csv文件(100K行,10-100M +)到mongo。 下面的代码是我用来从表单接受input的路由,并将logging首先插入到我的所有csv的元数据集合中,然后将csv的logging插入到它自己的集合中。 它适用于较小的文件(成千上万行),但当它达到50K +的顺序时花费太长。 下一个片段是使用csvstream来处理较大的文件(请参阅下文),但是在尝试使用stream时遇到错误。 问题:有人可以帮助将第一个示例修改为stream,以便它可以处理大型csv而不会挂起。 exports.addCSV = function(req,res){ var body = req.body; fileSystem.renameSync(req.files.myCSV.path, 'uploads/myFile', function(err){ if(err){ fileSystem.unlink(req.files.myCSV.path, function(){}); throw error; } }); var myObject = { userid: body.userid, name: body.name, description: body.description }; var MongoClient = require('mongodb').MongoClient; MongoClient.connect('mongodb://localhost:27017/csvdb', function(err, db){ if(err) throw err; var collection = db.collection('myCSVs'); collection.insert(myObject, function(err, insertedMyObject){ csvParser.mapFile('uploads/myFile', function(err, allRows){ […]

如何匹配最大数据的IP地址?

我正在处理分析,为了find我使用maximind数据的用户的位置。 目前我正在使用kuno使用ip地址获取位置信息。 例如: input是ip地址(1.0.0.0) 产量是位置(澳大利亚) 问题 kuno使用.dat或.csv文件使用ip获取位置。 我的应用程序应该假设处理1000请求/秒。 每个请求应该获取位置信息,所以打开.dat或.csv文件1000次抛出错误,性能有些不足。 所以我决定将数据(csv)文件移植到redis数据库。 以下是CSV文件的格式: Start ip, End ip, Location "1.0.0.0","1.0.0.255","Australia" "1.0.1.0","1.0.3.255","China" "1.0.4.0","1.0.7.255","Australia" "1.0.8.0","1.0.15.255","China" "1.0.16.0","1.0.31.255","Japan" "1.0.32.0","1.0.63.255","China" 有两件事我感到困惑 如何通过匹配开始和结束IP地址find给定IP地址的范围? 使用redis db来达到这个目的是很好的方法吗? 任何帮助或build议是伟大的。 如果混淆,我已经准备好解释了

在用node.js上传后parsingCSV的第一行

我需要上传大约350万行,大约300万行的cvs。 我只需要检查第一行的标题。 有没有一个有效的方法来做到这一点? 使用node-csv需要很长时间,因为它正在parsing整个事情。 我正在使用busyboy,并有一个stream。

在节点js中用fast-csv删除第一行的csv文件

我正在使用fast-csv节点模块来parsing一个csv,它的parsing成功,但我不希望字段的标题。 输出看起来像这样 [ 'ID', 'Date', 'Description', 'Amount' ] ID desc Description [ '1', '12/4/30', 'kebab ab ', '-1900.00' ] 第一行是字段的标题,但要从输出中删除它们。 我该怎么做?

Node.js数据库从具有Sequelize的文件插入

也许我不完全明白承诺或者Sequalize,但是经过一段时间的处理,感觉asynchronousDB操作只适用于简单的情况。 并且通过询问同步数据库访问的问题的数量,它看起来并不是唯一的。 这是我的情况。 假设我们有化合物的CSV文件,其中每行包含有关化合物的信息,以及以分号分隔的其成分列表。 我们希望从其中填充成分表,但没有重复。 例如,如果文件包含行 C1 IngA; IngB C2 IngA; IngC 我们想要三个loggingIngA,IngB和IngC的成分表。 所以当阅读行时,应该保存复合体,对于每个成分检查是否已经存在,如果不添加。 这里是代码: var lineReader=require('readline').createInterface({ input: require('fs').createReadStream(filename) }); lineReader.on('line', function(line) { let parts=line.split('\t'); compoundModel.create({ name: parts[0], }).then(entity => { let ingredients=parts[1].split(';'); ingredients.forEach((ing, index) => { ingModel.findOne({ where: {name: ing} }).then(ingEntity => { if (ingEntity) { return ingEntity; } return ingModel.create({ name: ing }) […]