¿Cómo importar datos de un archivo .CSV a una tabla MySQL usando Node.js?

¿Qué es un archivo .CSV?
Los archivos .CSV (valores separados por comas) son archivos de texto sin formato que contienen una lista de datos separados por comas (,). Es un formato que se usa mejor para datos tabulares, filas y columnas, exactamente como una hoja de cálculo, solo que la diferencia es que el archivo está en forma de texto sin formato. La idea de un archivo CSV es exportar e importar datos complejos de una aplicación a otra.

Nota: Aquí, estamos usando sample.csv para demostrar nuestro programa y procedimiento. En sample.csv hemos almacenado el nombre, la edad, el correo electrónico y la ciudad del usuario.

Importe CSV a MySQL usando Node.js:

  1. Cree un proyecto de node.js usando » npm init » y guarde su archivo .csv en el mismo directorio.
  2. Instale dos paquetes «mysql» y «csvtojson» usando el siguiente comando:
    npm i mysql csvtojson

    Controlador mysql : este es un controlador node.js para mysql. Está escrito en JavaScript, que no requiere compilación. Lo estamos usando para establecer conexión con nuestra base de datos MYSQL y realizar consultas.
    csvtojson: es un analizador csv para convertir csv a json o arrays de columnas.

  3. Ahora solo crea un archivo como index.js y escribe el siguiente código:
// 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");
});

Ejecute el archivo index.js con el siguiente comando:

node index.js

Producción:

Salida del programa en consola

Tabla de muestra en la base de datos MYSQL

Explicación del código:

  • En las dos primeras líneas de código   Importamos mysql y csvtojson .
    const csvtojson = require('csvtojson');
    const mysql = require("mysql")
  • Línea 10 – 23 : Creamos una conexión a nuestra base de datos.
    hostname = "localhost", 
    username = "root",         // Username of Mysql local server 
    password = "root",         // Password of Mysql local server
    databsename = "csvtomysql" // Database we are connecting to
  • Línea 23 – 38: Nos hemos conectado a nuestra base de datos » csvtomysql » y hemos creado una tabla llamada «muestra» con los campos deseados de acuerdo con nuestro archivo muestra.csv.
  • Línea 42 – 64 : Obtuvimos sample.csv ubicado en el directorio actual y convertimos todos los datos a JSON.
    • En la línea 43, todos los datos de sample.csv se convierten a JSON y se almacenan en la variable «fuente».
    • Luego recorremos cada fila y extraemos el valor de Nombre, Correo electrónico, Edad y Ciudad de esa fila. 
      • En la línea 53, creamos una array de valores en Nombre, Correo electrónico, Edad y Ciudad, es decir, los datos de la columna de la i-ésima fila.
      • Luego insertamos esos datos en la tabla usando la consulta «INSERTAR EN valores de muestra (Nombre, Correo electrónico, Edad, Ciudad)»
      • En la línea 62 estamos mostrando los datos insertados a la consola. 

Entonces, de esta manera podemos importar cualquier dato de un archivo .csv a nuestra base de datos MYSQL.

Publicación traducida automáticamente

Artículo escrito por Alok_Kumar_Singh y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *