gpt4 book ai didi

javascript - 使用 Sequelize 将 JSON 文件中的大数据导入到 MYSQL 数据库

转载 作者:行者123 更新时间:2023-12-02 21:54:58 25 4
gpt4 key购买 nike


我正在尝试使用 Sequelize 将数据从 JSON 文件导入到 mysql 数据库。我编写了以下 JavaScript 代码来实现相同的目的。虽然它适用于小数据集,但当我为大文件(包含数百万条记录)运行它时,它不起作用并且我看到的错误是这样的。

  1. javascript 堆内存不足,然后我运行了这个 node --max-old-space-size=4096 importRecords.js 然后我得到了第二个错误
  2. 未处理的拒绝 SequelizeConnectionAcquireTimeoutError:操作超时在 pool.acquire.catch.error (F:\demo-sequelize\node_modules\sequelize\lib\dialects\abstract\connection-manager.js:282:52)
var Sequelize = require('sequelize');
var JM = require('json-mapper');
const fs = require('fs');

var sequelize = new Sequelize('testdb', 'root', 'root', {
dialect : 'mysql',
pool: {
max: 5,
min: 0,
idle: 10000
},
});

var Profile = sequelize.define('profile', {
firstName: Sequelize.STRING,
lastName: Sequelize.STRING,
email: Sequelize.STRING
});

let rawdata = fs.readFileSync('largeData.json');
let input = JSON.parse(rawdata);

for(let customer of input){
//console.log(customer.email);

Profile.sync({force: true}).then(function () {
// Table created
return Profile.create({
firstName: customer.firstName,
lastName: customer.lastName,
email: customer.email
});
});

}

任何人都可以建议我如何实现这一目标

<强>1。最短时间可能是使用异步执行。
2. 以最佳方式最小化执行时的 Sequelize 日志记录

最佳答案

我认为在内存中同步读取这个大文件不是一个好主意。在这种情况下,流媒体是更好的选择。有许多可用的软件包可以完成此类工作。我将举一个例子。

stream-json ( https://github.com/uhop/stream-json ) - https://github.com/uhop/stream-json/wiki/StreamArray

const fs = require("fs");
const StreamArray = require('stream-json/streamers/StreamArray');

async function insertRec(row) {
console.log(row);
// code to insert the record
}

async function process() {
return new Promise((resolve, reject) => {
fs.createReadStream('path to json having array')
.pipe(StreamArray.withParser())
.on("data", async row => {
await insertRec(row);
})
.on("error", err => {
reject(err);
})
.on("end", () => {
console.log("CSV file successfully processed");
resolve();
});
});
}

process();

假设您有以下格式的 json:

[
{
"id": 1,
"field": 2
},
{
"id": 2,
"field": 5
}
]

这将使您了解如何与现有解决方案集成。

关于javascript - 使用 Sequelize 将 JSON 文件中的大数据导入到 MYSQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60027118/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com