最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解node如何將Excel導(dǎo)入數(shù)據(jù)庫

 更新時間:2024年11月05日 08:34:57   作者:JYeontu  
這篇文章主要為大家詳細介紹了node如何通過腳本實現(xiàn)將Excel導(dǎo)入mysql數(shù)據(jù)庫里,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下

說在前面

最近搞了一個網(wǎng)站用來記錄自己日常的一些東西,之前的數(shù)據(jù)都是用Excel表格記錄的,現(xiàn)在需要將之前記錄的Excel數(shù)據(jù)導(dǎo)入到mysql數(shù)據(jù)庫里,于是就想著用node寫一個簡單的腳本來處理,所以就有了這一篇文章。

比如現(xiàn)在我們有這樣一份Excel數(shù)據(jù):

我們需要將這些數(shù)據(jù)插入到名為t_user的表中去。

1、導(dǎo)入模塊

首先,代碼導(dǎo)入了xlsxfs模塊。xlsx模塊用于操作 Excel 文件,fs模塊用于文件系統(tǒng)操作。

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

2、讀取 Excel 文件

使用xlsx.readFile方法讀取指定路徑(./static/test.xlsx)的 Excel 文件,并將結(jié)果存儲在workBook變量中。

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

3、獲取指定工作表并轉(zhuǎn)換為 JSON

  • workBook中獲取Sheet1的工作表,并存儲在sheet變量中。
  • 使用xlsx.utils.sheet_to_json方法將工作表轉(zhuǎn)換為 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數(shù)據(jù)如下:

4、生成 SQL 插入語句

有了整理好的 JSON 數(shù)據(jù)后,我們就可以開始為將這些數(shù)據(jù)插入到數(shù)據(jù)庫中做準備了。

  • 首先創(chuàng)建一個空數(shù)組sqlList,用于存儲生成的 SQL 插入語句。
  • 遍歷sheetJson中的每個對象(代表 Excel 工作表中的一行數(shù)據(jù),就是一條完整的信息記錄。)。
  • 對于每個對象,使用for...in循環(huán)遍歷其屬性,構(gòu)建 SQL 插入語句的列名部分(keyStr)和值部分(valStr)。將字符串值用單引號括起來。
  • 最后,將構(gòu)建好的 SQL 插入語句(INSERT INTO t_user (${keyStr}) VALUES (${valStr});)添加到sqlList數(shù)組中。
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是需要插入數(shù)據(jù)的表名,可以根據(jù)實際情況進行調(diào)整。

5、寫入 SQL 語句到文件

使用fs.writeFileSync方法將sqlList數(shù)組中的所有 SQL 插入語句以換行符連接后寫入到./file/excel2Sql.text文件中。

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

生成的sql插入語句如下:

6、插入數(shù)據(jù)庫

我們有一個t_user表,現(xiàn)在表里是空的

執(zhí)行生成的插入語句,將腳本生成的sql插入語句復(fù)制到控制臺,執(zhí)行插入語句

成功執(zhí)行插入語句,我們就成功地將excel表中的數(shù)據(jù)都導(dǎo)入到數(shù)據(jù)庫中去了

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數(shù)據(jù)轉(zhuǎn)為sql插入語句的簡單腳本,大家可以根據(jù)自己的需求進行微調(diào)后使用,也可以在node中直接連接數(shù)據(jù)庫,省去手動執(zhí)行的步驟,不過我覺得手動插入也不麻煩,就直接生成插入語句然后手動執(zhí)行語句來插入了

以上就是詳解node如何將Excel導(dǎo)入數(shù)據(jù)庫的詳細內(nèi)容,更多關(guān)于node Excel導(dǎo)入數(shù)據(jù)庫的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Node綁定全局TraceID的實現(xiàn)方法

    Node綁定全局TraceID的實現(xiàn)方法

    這篇文章主要介紹了Node 綁定全局 TraceID的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • 詳解Node.js中的模塊化方法

    詳解Node.js中的模塊化方法

    這篇文章主要為大家介紹了Node.js的模塊化,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • 詳解node如何將Excel導(dǎo)入數(shù)據(jù)庫

    詳解node如何將Excel導(dǎo)入數(shù)據(jù)庫

    這篇文章主要為大家詳細介紹了node如何通過腳本實現(xiàn)將Excel導(dǎo)入mysql數(shù)據(jù)庫里,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2024-11-11
  • npm包發(fā)布和刪除的超詳細教程

    npm包發(fā)布和刪除的超詳細教程

    npm是JavaScript的包管理器,也是世界上最大的軟件注冊中心,下面這篇文章主要給大家介紹了關(guān)于npm包發(fā)布和刪除的超詳細教程,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-02-02
  • 如何將Node.js中的回調(diào)轉(zhuǎn)換為Promise

    如何將Node.js中的回調(diào)轉(zhuǎn)換為Promise

    這篇文章主要給大家介紹了關(guān)于如何將Node.js中的回調(diào)轉(zhuǎn)換為Promise的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Nodejs進階:核心模塊net入門學(xué)習(xí)與實例講解

    Nodejs進階:核心模塊net入門學(xué)習(xí)與實例講解

    本篇文章主要是介紹了Nodejs之NET模塊,net模塊是同樣是nodejs的核心模塊,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2016-11-11
  • 詳解Node.js中的Async和Await函數(shù)

    詳解Node.js中的Async和Await函數(shù)

    這篇文章主要介紹了Node.js中的Async和Await函數(shù)的相關(guān)知識,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2018-02-02
  • 一文詳解npm如何更新項目最新依賴包

    一文詳解npm如何更新項目最新依賴包

    npm包的更新速度很快,為了將項目或者全局依賴更新到最新版本,下面這篇文章主要給大家介紹了關(guān)于npm如何更新項目最新依賴包的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-01-01
  • 解析Node.js異常處理中domain模塊的使用方法

    解析Node.js異常處理中domain模塊的使用方法

    這篇文章主要介紹了Node.js異常處理中domain模塊的使用方法,文中最后提到了內(nèi)存泄漏的相關(guān)問題,值得注意,需要的朋友可以參考下
    2016-02-02
  • 如何正確使用Nodejs 的 c++ module 鏈接到 OpenSSL

    如何正確使用Nodejs 的 c++ module 鏈接到 OpenSSL

    這篇文章主要介紹了如何正確使用Nodejs 的 c++ module 鏈接到 OpenSSL,需要的朋友可以參考下
    2014-08-08

最新評論

大田县| 鲜城| 黔江区| 嘉祥县| 刚察县| 鸡泽县| 望江县| 玉林市| 通江县| 乌兰浩特市| 兰溪市| 汝州市| 清苑县| 万荣县| 松桃| 尉氏县| 双江| 云浮市| 东港市| 濉溪县| 澎湖县| 瑞安市| 嘉义市| 四子王旗| 灵武市| 南汇区| 南木林县| 宣汉县| 崇礼县| 云南省| 清新县| 华宁县| 汕头市| 宜君县| 新郑市| 陆河县| 莱芜市| 扬中市| 新和县| 永安市| 石阡县|