详解node如何将Excel导入数据库

 更新时间:2024年11月05日 08:34:57   作者:JYeontu  
这篇文章主要为大家详细介绍了node如何通过脚本实现将Excel导入mysql数据库里,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下

说在前面

最近搞了一个网站用来记录自己日常的一些东西,之前的数据都是用Excel表格记录的,现在需要将之前记录的Excel数据导入到mysql数据库里,于是就想着用node写一个简单的脚本来处理,所以就有了这一篇文章。

比如现在我们有这样一份Excel数据:

我们需要将这些数据插入到名为t_user的表中去。

1、导入模块

首先,代码导入了xlsxfs模块。xlsx模块用于操作 Excel 文件,fs模块用于文件系统操作。

const xlsx = require("xlsx");
const fs = require("fs");

2、读取 Excel 文件

使用xlsx.readFile方法读取指定路径(./static/test.xlsx)的 Excel 文件,并将结果存储在workBook变量中。

const workBook = xlsx.readFile("./static/test.xlsx");

3、获取指定工作表并转换为 JSON

  • workBook中获取Sheet1的工作表,并存储在sheet变量中。
  • 使用xlsx.utils.sheet_to_json方法将工作表转换为 JSON 格式,并存储在sheetJson变量中。
  • 最后,使用fs.writeFileSync方法将sheetJson以格式化的 JSON 字符串形式写入到./file/sheetJson.text文件中。
const name = "Sheet1";
let sheet = workBook.Sheets[name];
const sheetJson = xlsx.utils.sheet_to_json(sheet);
fs.writeFileSync("./file/sheetJson.text", JSON.stringify(sheetJson, null, 2));

获取到的json数据如下:

4、生成 SQL 插入语句

有了整理好的 JSON 数据后,我们就可以开始为将这些数据插入到数据库中做准备了。

  • 首先创建一个空数组sqlList,用于存储生成的 SQL 插入语句。
  • 遍历sheetJson中的每个对象(代表 Excel 工作表中的一行数据,就是一条完整的信息记录。)。
  • 对于每个对象,使用for...in循环遍历其属性,构建 SQL 插入语句的列名部分(keyStr)和值部分(valStr)。将字符串值用单引号括起来。
  • 最后,将构建好的 SQL 插入语句(INSERT INTO t_user (${keyStr}) VALUES (${valStr});)添加到sqlList数组中。
let sqlList = [];
sheetJson.forEach((item) => {
 let keyStr = "",
   valStr = "";
 for (const key in item) {
   if (keyStr) keyStr += ",";
   keyStr += key;
   if (valStr) valStr += ",";
   valStr += `'${item[key]}'`;
 }
 sqlList.push(`INSERT INTO t_user (${keyStr}) VALUES (${valStr});`);
});

这里的t_user是需要插入数据的表名,可以根据实际情况进行调整。

5、写入 SQL 语句到文件

使用fs.writeFileSync方法将sqlList数组中的所有 SQL 插入语句以换行符连接后写入到./file/excel2Sql.text文件中。

fs.writeFileSync("./file/excel2Sql.text", sqlList.join("\n"));

生成的sql插入语句如下:

6、插入数据库

我们有一个t_user表,现在表里是空的

执行生成的插入语句,将脚本生成的sql插入语句复制到控制台,执行插入语句

成功执行插入语句,我们就成功地将excel表中的数据都导入到数据库中去了

7、完整代码

const xlsx = require("xlsx");
const fs = require("fs");
const workBook = xlsx.readFile("./static/test.xlsx");

const name = "Sheet1";
let sheet = workBook.Sheets[name];
const sheetJson = xlsx.utils.sheet_to_json(sheet);
fs.writeFileSync("./file/sheetJson.text", JSON.stringify(sheetJson, null, 2));
let sqlList = [];
sheetJson.forEach((item) => {
  let keyStr = "",
    valStr = "";
  for (const key in item) {
    if (keyStr) keyStr += ",";
    keyStr += key;
    if (valStr) valStr += ",";
    valStr += `'${item[key]}'`;
  }
  sqlList.push(`INSERT INTO t_user (${keyStr}) VALUES (${valStr});`);
});
fs.writeFileSync("./file/excel2Sql.text", sqlList.join("\n"));

这是一个将Excel数据转为sql插入语句的简单脚本,大家可以根据自己的需求进行微调后使用,也可以在node中直接连接数据库,省去手动执行的步骤,不过我觉得手动插入也不麻烦,就直接生成插入语句然后手动执行语句来插入了

以上就是详解node如何将Excel导入数据库的详细内容,更多关于node Excel导入数据库的资料请关注脚本之家其它相关文章!

相关文章

  • Node.js环境下Koa2添加travis ci持续集成工具的方法

    Node.js环境下Koa2添加travis ci持续集成工具的方法

    这篇文章主要给大家介绍了在Node.js环境下Koa2添加travis ci持续集成工具的方法,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面跟着小编一起来学习学习吧。
    2017-06-06
  • 整理几个关键节点深入理解nodejs

    整理几个关键节点深入理解nodejs

    这篇文章主要介绍了整理几个关键节点深入理解nodejs,文章围绕主题展开详细的内容介绍,需要的小伙伴可以参考一下,需要的小伙伴可以参考一下
    2022-07-07
  • 详解nodejs微信公众号开发——4.自动回复各种消息

    详解nodejs微信公众号开发——4.自动回复各种消息

    这篇文章主要介绍了详解nodejs微信公众号开发——4.自动回复各种消息,非常具有实用价值,需要的朋友可以参考下
    2017-04-04
  • Node.js之readline模块的使用详解

    Node.js之readline模块的使用详解

    这篇文章主要介绍了Node.js之readline模块的使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • 深入理解Node.js 事件循环和回调函数

    深入理解Node.js 事件循环和回调函数

    这篇文章主要介绍了深入理解Node.js 事件循环和回调函数,详细的介绍Node.js 事件循环和Node.js回调函数,需要学习的可以参考一下。
    2016-11-11
  • 浅析Node.js实现HTTP文件下载

    浅析Node.js实现HTTP文件下载

    本文介绍如何用Node.js来实现HTTP文件下载,文章以实例演示所以很详细,有需要的小伙伴们可以参考学习。
    2016-08-08
  • node.js读写json文件的方法

    node.js读写json文件的方法

    这篇文章介绍了node.js读写json文件的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • Node.js中console.log()输出彩色字体的方法示例

    Node.js中console.log()输出彩色字体的方法示例

    这篇文章主要给大家介绍了关于Node.js中console.log()输出彩色字体的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Node.js具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-12-12
  • Windows上安装Node-RED的实现

    Windows上安装Node-RED的实现

    Node-RED是一个用于物联网编程的工具,提供了一个基于浏览器的编程环境和丰富的节点类型,本文就来介绍一下Windows上安装Node-RED的实现,感兴趣的可以了解一下
    2025-02-02
  • 详解nodejs异步I/O和事件循环

    详解nodejs异步I/O和事件循环

    本篇文章主要介绍了nodejs异步I/O和事件循环,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06

最新评论