Automatización de Base de Datos

Automatización de Base de Datos con Node.js

Este ejemplo muestra cómo automatizar la creación de una base de datos MySQL utilizando mysql2/promise. La función ejecutará el código SQL para crear la base de datos, las tablas y los datos iniciales.

Función Principal: initializeDatabase

const mysql = require("mysql2/promise");

const initializeDatabase = async (config, schemaSQL, seedSQL) => {
    let connection;
    try {
        connection = await mysql.createConnection({
            host: config.host,
            user: config.user,
            password: config.password,
        });
        console.log(`Conectado al servidor MySQL en ${config.host}`);

        // Crear la base de datos si no existe
        await connection.query(\`CREATE DATABASE IF NOT EXISTS \${config.database};\`);
        console.log(\`Base de datos '\${config.database}' creada o ya existe.\`);

        // Usar la base de datos creada
        await connection.query(\`USE \${config.database};\`);
        console.log(\`Usando la base de datos '\${config.database}'.\`);

        // Ejecutar el script para crear tablas
        if (schemaSQL) {
            await connection.query(schemaSQL);
            console.log("Tablas creadas correctamente.");
        }

        // Insertar datos iniciales si es necesario
        if (seedSQL) {
            await connection.query(seedSQL);
            console.log("Datos iniciales insertados correctamente.");
        }
    } catch (error) {
        console.error("Error durante la inicialización de la base de datos:", error.message);
    } finally {
        if (connection) {
            await connection.end();
            console.log("Conexión cerrada.");
        }
    }
};

module.exports = { initializeDatabase };
    

Cómo Usar la Función

1. Configuración

const config = {
    host: "localhost",
    user: "root",
    password: "password",
    database: "my_database",
};
    

2. Archivos SQL

Archivo de esquema (schema.sql):

CREATE TABLE IF NOT EXISTS users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(100) NOT NULL UNIQUE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
    

Archivo de datos iniciales (seed.sql):

INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com'), ('Bob', 'bob@example.com');
    

3. Ejecutar la Configuración

Utiliza el siguiente archivo para inicializar:

const fs = require("fs");
const path = require("path");
const { initializeDatabase } = require("./initializeDatabase");

const schemaSQL = fs.readFileSync(path.join(__dirname, "schema.sql"), "utf8");
const seedSQL = fs.readFileSync(path.join(__dirname, "seed.sql"), "utf8");

(async () => {
    await initializeDatabase(config, schemaSQL, seedSQL);
})();
    

Resultados Esperados

Al ejecutar la configuración, deberías ver:

  • Base de datos creada si no existía.
  • Tablas creadas a partir del esquema proporcionado.
  • Datos iniciales insertados si se proporciona un archivo seed.sql.

 

Destacado

Bootloader Avanzado en Ensamblador

Bootloader Avanzado en Ensamblador Características del Bootloader Se carga en la dirección 0x7C00 (BIOS). ...