πŸ“ Node.js λ₯Ό 톡해 MySQL λ°μ΄ν„°λ² μ΄μŠ€ μ ‘κ·Όν•˜κΈ°

10_2pangΒ·2023λ…„ 6μ›” 11일
0

βš½οΈνŠΈλŸ¬λΈ”μŠˆνŒ…

λͺ©λ‘ 보기
66/94
post-thumbnail

πŸ‘¨β€πŸ’»Β μ‚¬κ±΄


Node.js λ₯Ό ν†΅ν•˜μ—¬, data.json 파일의 데이터λ₯Ό MySQL에 μ ‘κ·Όμ‹œμΌœ, μ›ν•˜λŠ” ν…Œμ΄λΈ”μ— μ‚½μž…ν•˜λŠ” 것을 λͺ©ν‘œλ‘œ μ½”λ“œλ₯Ό μž‘μ„±ν•˜λ‹€κ°€ MySQL κ΄€λ ¨ λ©”μ„œλ“œμ— λŒ€ν•΄ 잘λͺ°λΌ 어렀움이 μžˆμ—ˆλ‹€. 이에 따라 GPT μ„ μƒλ‹˜ κ³Ό ꡬ글링을 톡해 이λ₯Ό ν•΄κ²°ν•˜κ³ μž ν•˜μ˜€λ‹€.

βœ…Β ν•΄κ²°


ν•΄κ²°ν•œ μ½”λ“œλ₯Ό 톡해 정리λ₯Ό ν•΄λ³΄λ €ν•œλ‹€. ( μ—­μ‹œ,,GPTμ§±,,ꡬ글짱,,)

const fs = require('fs');
const mysql = require('mysql');

// MySQL λ°μ΄ν„°λ² μ΄μŠ€μ— μ—°κ²°ν•˜κΈ° μœ„ν•œ 객체 생성
const connection = mysql.createConnection({
  host: process.env.DB_HOST,
  user: process.env.DB_USER,
  password: process.env.DB_PASSWORD,
  database: process.env.DB_NAME,
})

const loadData = async () => {
  return new Promise((resolve, reject) => {
    // connect λ©”μ„œλ“œλ₯Ό 톡해 데이터 베이슀 μ—°κ²°
    connection.connect((err) => {
      if (err) {
        console.error(err)
        reject(err)
        return
      }
      console.log('Connected to database');
      
	  // fs ν•¨μˆ˜λ₯Ό 톡해, data.json νŒŒμΌμ„ λΉ„λ™κΈ°μ μœΌλ‘œ 읽음
      fs.readFile('data.json', 'utf8', async (err, data) => {
        if (err) {
          console.error(err)
          reject(err)
          return
        }
        
        // json파일의 데이터λ₯Ό 객체둜 λ³€ν™˜
        const jsonData = JSON.parse(data);
        
        // map으둜 λŒλ©΄μ„œ, 각 데이터 ν•­λͺ©μ— λŒ€ν•΄ μ‚½μž…μž‘μ—… μˆ˜ν–‰
        const promises = jsonData.map((item) => {
          
          //각 μš”μ†Œλ“€μ— λŒ€ν•΄ μƒˆλ‘œμš΄ ν”„λ‘œλ―ΈμŠ€ 객체 생성
          return new Promise((resolve, reject) => {
            
            // INSERT INTO 쿼리문 생성
            const query = 'INSERT INTO fm_table SET ?';
            
          	// query λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ 쿼리 λ™μž‘ ( queryλŠ” μœ„μ˜ λ³€μˆ˜, item 은 데이터 객체  
            connection.query(query, item, (err, result) => {
              if (err) {
                console.error(err);
                reject(err);
                return;
              }
              
              // ν”„λ‘œλ―ΈμŠ€ μ •μƒμ μœΌλ‘œ μ‹€ν–‰λ˜λ©΄ console.log μ‹€ν–‰ ν›„, ν”„λ‘œλ―ΈμŠ€ μˆ˜ν–‰
              console.log('Data inserted', result);
              resolve();
            });
          });
        });

        try {
          
          //λͺ¨λ“  ν”„λ‘œλ―ΈμŠ€κ°€ μˆ˜ν–‰λ λ•ŒκΉŒμ§€ λŒ€κΈ°
          await Promise.all(promises);
          // μ „λΆ€λ‹€ μ‹€ν–‰λ˜λ©΄, resolve 됨
          resolve();
        } catch (error) {
          reject(error);
        }
      });
    });
  });
};

loadData()
  .then(() => console.log('All data inserted'))
  .catch(err => console.error(err));

πŸ’­Β κ°œμ„ 


  • node.js μ—μ„œ μ‹€ν–‰ν•΄λ³΄λ‹ˆ, MySQL λ°μ΄ν„°λ² μ΄μŠ€μ— μ‚½μž…λ λ•Œ DATE κ°€ 'YYYY-MM-DD" ν˜•μ‹μ΄ μ•„λ‹ˆλΌ 였λ₯˜κ°€ λ°œμƒν–ˆλ‹€. 이λ₯Ό μˆ˜μ •ν•΄μ•Όν• κ²ƒκ°™λ‹€.
profile
μ£Όλ‹ˆμ–΄ ν”„λ‘ νŠΈμ—”λ“œ 개발자 이광렬 μž…λ‹ˆλ‹€ 🌸

0개의 λŒ“κΈ€