Sequelize 实现 MySQL 数据库数据的导入导出

前言

随着业务逐渐规模化,各种数据的导入导出需求变得越来越重要。在 Node.js 应用开发中,Sequelize 是一个常用的 ORM 框架,其功能强大且易于使用。在本文中,我们将利用 Sequelize 实现 MySQL 数据库数据的导入导出,并提供示例代码。

数据导出

数据导出的目的是将数据库中的数据保存到特定格式的文件中,例如 CSV、 Excel、 JSON 等。Sequelize 框架提供了很多方法来导出数据,本节将介绍几个常用的方法。

CSV 导出

将数据导出为 CSV 格式可以方便地在电子表格软件(例如 Excel)中进行处理。

const fs = require('fs');
const csvWriter = require('csv-write-stream');
const writer = csvWriter();

const User = require('./models/user'); // 引入 Sequelize 的 User 模型

const data = await User.findAll();
writer.pipe(fs.createWriteStream('data.csv'));

data.forEach(d => {
  writer.write(d.toJSON()); // 将每行数据转为 JSON 并写入 CSV 文件中
});

writer.end();

JSON 导出

将数据导出为 JSON 格式可以方便地在 JavaScript 代码中进行处理。

const fs = require('fs');

const User = require('./models/user'); // 引入 Sequelize 的 User 模型

const data = await User.findAll();
fs.writeFileSync('data.json', JSON.stringify(data));

Excel 导出

将数据导出为 Excel 格式可以在电子表格软件中方便地进行处理。需要使用第三方库 exceljs

const fs = require('fs');
const ExcelJS = require('exceljs');

const User = require('./models/user'); // 引入 Sequelize 的 User 模型

const data = await User.findAll();
const workbook = new ExcelJS.Workbook();
const worksheet = workbook.addWorksheet('My Sheet');
worksheet.columns = [
  { header: 'ID', key: 'id', width: 10 },
  { header: 'Name', key: 'name', width: 32 },
  { header: 'Age', key: 'age', width: 15 },
];

data.forEach(d => {
  worksheet.addRow(d.toJSON()); // 将每行数据转为 JSON 并添加到 Excel 工作表中
});

workbook.xlsx.writeFile('data.xlsx');

数据导入

数据导入的目的是将特定格式的文件中的数据导入到数据库中。Sequelize 框架提供了 bulkCreate 方法来实现数据导入,其支持从 CSV、Excel、JSON 等格式中导入数据。本节将以 CSV 格式为例进行讲解。

CSV 导入

const fs = require('fs');
const csv = require('csv-parser');

const User = require('./models/user'); // 引入 Sequelize 的 User 模型

fs.createReadStream('data.csv')
  .pipe(csv())
  .on('data', async (row) => {
    await User.create(row); // 将每行数据插入到数据库中
  })
  .on('end', () => {
    console.log('Data imported');
  });

总结

本文介绍了使用 Sequelize 实现 MySQL 数据库数据的导入导出的方法,并提供了示例代码。在实际开发中,我们根据具体需求选择合适的方法进行导入导出操作,以提高工作效率。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65a79908add4f0e0ff0bddcc


纠错反馈