300===Dev Framework/ExpressJS

Create a backend app using Express.js that parses an Excel document and stores the data into a MySQL database hosted on AWS,

블로글러 2024. 6. 12. 17:25

To create a backend app using Express.js that parses an Excel document and stores the data into a MySQL database hosted on AWS, you need to break down the task into several steps involving setting up the server, parsing the Excel file, and interacting with the MySQL database. Let's walk through each step with technical details and analogies.

The Big Picture

Imagine you are building a system where you receive a package (an Excel file), unpack it (parse the Excel data), and then store each item in a warehouse (MySQL database). Your Express.js server will handle the incoming package, the unpacking process, and the storage.

Core Concepts

  1. Express.js: A web application framework for Node.js, designed for building web applications and APIs.
  2. Excel Parsing: Reading data from Excel files, which can be done using libraries like xlsx.
  3. MySQL Database: A relational database management system where your parsed data will be stored.
  4. AWS RDS: Amazon's Relational Database Service, where your MySQL database will be hosted.

Detailed Walkthrough

  1. Setting Up the Server:

    • Install Node.js and Express.js.
    • Create a new Express.js application.
  2. Parsing the Excel File:

    • Use the xlsx library to read and parse the Excel file.
  3. Connecting to MySQL Database:

    • Use the mysql2 library to connect to your MySQL database hosted on AWS.
  4. Storing Data into MySQL:

    • Write SQL queries to insert the parsed data into your database.

Understanding Through an Example

Step 1: Setting Up the Server

First, ensure you have Node.js installed. Then, create a new project and install necessary dependencies.

mkdir excel-to-mysql
cd excel-to-mysql
npm init -y
npm install express multer xlsx mysql2

Create server.js:

const express = require('express');
const multer = require('multer');
const xlsx = require('xlsx');
const mysql = require('mysql2');

const app = express();
const port = 3000;

// Configure multer for file upload
const upload = multer({ dest: 'uploads/' });

// MySQL connection configuration
const connection = mysql.createConnection({
    host: 'your-aws-rds-endpoint',
    user: 'your-username',
    password: 'your-password',
    database: 'your-database'
});

// Connect to MySQL
connection.connect(err => {
    if (err) {
        console.error('Error connecting to MySQL:', err.stack);
        return;
    }
    console.log('Connected to MySQL as id', connection.threadId);
});

// Upload and parse Excel file
app.post('/upload', upload.single('file'), (req, res) => {
    const filePath = req.file.path;

    // Read the Excel file
    const workbook = xlsx.readFile(filePath);
    const sheet_name_list = workbook.SheetNames;
    const xlData = xlsx.utils.sheet_to_json(workbook.Sheets[sheet_name_list[0]]);

    // Insert data into MySQL
    xlData.forEach(row => {
        const query = 'INSERT INTO your_table SET ?';
        connection.query(query, row, (err, results) => {
            if (err) {
                console.error('Error inserting data:', err);
                res.status(500).send('Error inserting data');
                return;
            }
        });
    });

    res.send('File uploaded and data inserted into database');
});

app.listen(port, () => {
    console.log(`Server running at http://localhost:${port}`);
});

Step 2: Creating the Database and Table

Before running the server, ensure you have your MySQL database and table set up. Connect to your MySQL instance and create a database and a table.

CREATE DATABASE your_database;
USE your_database;

CREATE TABLE your_table (
    id INT AUTO_INCREMENT PRIMARY KEY,
    column1 VARCHAR(255),
    column2 VARCHAR(255),
    ...
);

Conclusion and Summary

By following the above steps, you will have an Express.js server that accepts an Excel file, parses its content, and inserts the data into a MySQL database hosted on AWS. This involves setting up an Express server, using multer for handling file uploads, xlsx for parsing Excel files, and mysql2 for database operations.

Test Your Understanding

  1. How does multer help in handling file uploads in an Express.js application?
  2. What is the purpose of the xlsx library in this context?
  3. How do you configure a connection to a MySQL database in Node.js using mysql2?
  4. Write a SQL query to insert a new record into a table named students with columns name, age, and grade.

Reference

728x90