CSV 到 JSON 节点 js --> rethinkdb
CSV into JSON node js --> rethinkdb
我想读取一个 csv 文件并将其转换为 JSON 对象数组,以便我可以插入到 rethinkdb 数据库中。我在节点 js 中工作。
一个名为 csvtojson 的工具将 csv 内容转换为 json(请参阅下面的代码)。我试图将结果放入名为数据库的变量中。然而,数据库在 console.log 中仍然是空的。你知道为什么会这样吗?
//Converter Class
var Converter = require("csvtojson").Converter;
var converter = new Converter({});
//read from file
require("fs").createReadStream("test.csv").pipe(converter);
var database={};
//end_parsed will be emitted once parsing finished
converter.on("end_parsed", function (jsonArray) {
console.log(jsonArray); //here is your result jsonarray
database=jsonArray
});
console.log(JSON.stringify(database))
我在 console.log 中 test.csv 的输出是:
[ { 名称:'object 1',数量:-100 },
{ 名称:'object 2',数量:-1750 } ]
我的第二个问题:
这是否足以插入到 rethinkdb 中,还是我应该转换成另一种格式才能工作?
谢谢!!
这是因为 JSON.stringify(database)
运行 在事件 end_parsed
触发之前。在 NodeJS 中,由于 JavaScript 异步,流程控制不像其他语言那样从上到下。为转换器对象的事件 end_parsed
设置事件处理程序后。您的程序继续 运行,不会阻塞等待处理 CSV 文件。那时候database
还是空的
只需像这样更改它:
converter.on("end_parsed", function (jsonArray) {
console.log(jsonArray); //here is your result jsonarray
database=jsonArray
console.log(JSON.stringify(database))
});
将使其工作,因为 database
已设置并在 end_parsed
事件的事件处理程序中调用 console.log。
Is this good enough to insert in the rethinkdb or should I convert into another format for it to work?
是的,是的。虽然一个小问题,但您可能应该使用像 name
、quantity
这样的键来匹配许多其他 JavaScript 样式,通常是驼峰式。
此外,您应该阅读此处https://rethinkdb.com/docs/importing/
,看看您是否可以使用 RethinkDB 导入直接导入 CSV 文件。我发现 CSV 导入有点受限,但可能只是试一试。
我想读取一个 csv 文件并将其转换为 JSON 对象数组,以便我可以插入到 rethinkdb 数据库中。我在节点 js 中工作。
一个名为 csvtojson 的工具将 csv 内容转换为 json(请参阅下面的代码)。我试图将结果放入名为数据库的变量中。然而,数据库在 console.log 中仍然是空的。你知道为什么会这样吗?
//Converter Class
var Converter = require("csvtojson").Converter;
var converter = new Converter({});
//read from file
require("fs").createReadStream("test.csv").pipe(converter);
var database={};
//end_parsed will be emitted once parsing finished
converter.on("end_parsed", function (jsonArray) {
console.log(jsonArray); //here is your result jsonarray
database=jsonArray
});
console.log(JSON.stringify(database))
我在 console.log 中 test.csv 的输出是:
[ { 名称:'object 1',数量:-100 }, { 名称:'object 2',数量:-1750 } ]
我的第二个问题:
这是否足以插入到 rethinkdb 中,还是我应该转换成另一种格式才能工作?
谢谢!!
这是因为 JSON.stringify(database)
运行 在事件 end_parsed
触发之前。在 NodeJS 中,由于 JavaScript 异步,流程控制不像其他语言那样从上到下。为转换器对象的事件 end_parsed
设置事件处理程序后。您的程序继续 运行,不会阻塞等待处理 CSV 文件。那时候database
还是空的
只需像这样更改它:
converter.on("end_parsed", function (jsonArray) {
console.log(jsonArray); //here is your result jsonarray
database=jsonArray
console.log(JSON.stringify(database))
});
将使其工作,因为 database
已设置并在 end_parsed
事件的事件处理程序中调用 console.log。
Is this good enough to insert in the rethinkdb or should I convert into another format for it to work?
是的,是的。虽然一个小问题,但您可能应该使用像 name
、quantity
这样的键来匹配许多其他 JavaScript 样式,通常是驼峰式。
此外,您应该阅读此处https://rethinkdb.com/docs/importing/
,看看您是否可以使用 RethinkDB 导入直接导入 CSV 文件。我发现 CSV 导入有点受限,但可能只是试一试。