当前位置: 代码网 > it编程>前端脚本>Node.js > 详解node如何将Excel导入数据库

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

2024年11月25日 Node.js 我要评论
说在前面最近搞了一个网站用来记录自己日常的一些东西,之前的数据都是用excel表格记录的,现在需要将之前记录的excel数据导入到mysql数据库里,于是就想着用node写一个简单的脚本来处理,所以就

说在前面

最近搞了一个网站用来记录自己日常的一些东西,之前的数据都是用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导入数据库的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com