📌  相关文章
📜  如何使用 Node.js 将 .CSV 文件中的数据导入 MySQL 表?

📅  最后修改于: 2022-05-13 01:56:33.138000             🧑  作者: Mango

如何使用 Node.js 将 .CSV 文件中的数据导入 MySQL 表?

什么是 .CSV 文件?
.CSV (逗号分隔值)文件是纯文本文件,其中包含由逗号 (,) 分隔的数据列表。它是最适合用于表格数据、行和列的格式,就像电子表格一样,只是文件是纯文本形式的。 CSV 文件的想法是将复杂数据从一个应用程序导出和导入到另一个应用程序。

注意:在这里,我们使用 sample.csv 来演示我们的程序和过程。在 sample.csv 中,我们存储了用户的姓名、年龄、电子邮件和城市。

sample.csv 中的数据

使用 Node.js 将 CSV 导入 MySQL:

  1. 使用“ npm init ”创建一个 node.js 项目并将您的 .csv 文件保存在同一目录中。  
  2. 使用以下命令安装两个包“mysql”和“csvtojson”:
    npm i mysql csvtojson

    mysql驱动程序:这是 mysql 的 node.js 驱动程序。它是用 JavaScript 编写的,不需要编译。我们正在使用它与我们的 MYSQL 数据库建立连接并执行查询。
    csvtojson:它是一个 csv 解析器,用于将 csv 转换为 json 或列数组。

  3. 现在只需创建一个类似index.js的文件并写下以下代码:
// Importing mysql and csvtojson packages
// Requiring module
const csvtojson = require('csvtojson');
const mysql = require("mysql");
  
// Database credentials
const hostname = "localhost",
    username = "root",
    password = "root",
    databsename = "csvtomysql"
  
  
// Establish connection to the database
let con = mysql.createConnection({
    host: hostname,
    user: username,
    password: password,
    database: databsename,
});
  
con.connect((err) => {
    if (err) return console.error(
            'error: ' + err.message);
  
    con.query("DROP TABLE sample", 
        (err, drop) => {
  
        // Query to create table "sample"
        var createStatament = 
        "CREATE TABLE sample(Name char(50), " +
        "Email char(50), Age int, city char(30))"
  
        // Creating table "sample"
        con.query(createStatament, (err, drop) => {
            if (err)
                console.log("ERROR: ", err);
        });
    });
});
  
// CSV file name
const fileName = "sample.csv";
  
csvtojson().fromFile(fileName).then(source => {
  
    // Fetching the data from each row 
    // and inserting to the table "sample"
    for (var i = 0; i < source.length; i++) {
        var Name = source[i]["Name"],
            Email = source[i]["Email"],
            Age = source[i]["Age"],
            City = source[i]["City"]
  
        var insertStatement = 
        `INSERT INTO sample values(?, ?, ?, ?)`;
        var items = [Name, Email, Age, City];
  
        // Inserting data of current row
        // into database
        con.query(insertStatement, items, 
            (err, results, fields) => {
            if (err) {
                console.log(
    "Unable to insert item at row ", i + 1);
                return console.log(err);
            }
        });
    }
    console.log(
"All items stored into database successfully");
});

使用以下命令运行index.js文件:

node index.js

输出:

程序在控制台的输出

MYSQL 数据库中的示例表

代码说明:

  • 在前两行代码中,我们 Import mysqlcsvtojson
    const csvtojson = require('csvtojson');
    const mysql = require("mysql")
  • 第 10 – 23 行:我们创建了与数据库的连接。
    hostname = "localhost", 
    username = "root",         // Username of Mysql local server 
    password = "root",         // Password of Mysql local server
    databsename = "csvtomysql" // Database we are connecting to
  • 第 23 - 38 行:我们已经连接到我们的数据库“ csvtomysql ”,并根据我们的 sample.csv 文件创建了名为“sample”的表,其中包含所需的字段。
  • 第 42 – 64 行:我们获取位于当前目录的sample.csv并将所有数据转换为 JSON。
    • 在第 43 行, sample.csv中的所有数据都转换为 JSON 并存储在变量“source”中
    • 然后我们遍历每一行并从该行中提取姓名、电子邮件、年龄和城市值。
      • 在第 53 行,我们在 Name、Email、Age 和 City 中创建了一个值数组,即第 i 行的列数据。
      • 然后我们使用查询“INSERT INTO sample values(Name, Email, Age, City)”将该数据插入到表中
      • 在第 62 行,我们将插入的数据显示到控制台。

因此,通过这种方式,我们可以将任何数据从 .csv 文件导入到我们的 MYSQL 数据库中。