sitelink1 https://blog.naver.com/n_jihyeon/222084769999 
sitelink2  
sitelink3  
extra_vars4  
extra_vars5  
extra_vars6  

//** scheduleList 모양은 [ [], [], [], ... ]

let bindVariables = '';

let queryArray = [];

queryArray = scheduleList.flat(); // 한번 flat 하게 만들어주어야 함

scheduleList.forEach((item, index) => {

    if (scheduleList.length === (index + 1)) {

        bindVariables += `(?, ?, ?, '-')`;

    } else {

        bindVariables += `(?, ?, ?, '-'),`; // 입력하려는 컬럼 수와 같아야 함

    }

})

const connection = await pool.getConnection();

const queryString = 

    `INSERT INTO SCHEDULE 

        (FOLDER_ID, DAYS, PLACE_ID, SCHEDULE_NEXT) 

    VALUES 

        ${bindVariables}`;

console.log(queryString);

let result = await connection.query(queryString, [...queryArray]); // 전개연산자로 풀어서 넣어주어야 함

 

 

 

 

 

* 체크포인트

 

- 실행하려는 SQL문

    INSERT INTO SCHEDULE (FOLDER_ID , DAYS, PLACE_ID , SCHEDULE_NEXT) 

    VALUES 

    ('447e5d70', '1', '3d5af52f', '-'), 

    ('447e5d70', '2', '3d5af52f', '-'), 

    ('447e5d70', '3', '3d5af52f', '-'), 

    ('447e5d70', '4', '3d5af52f', '-'), 

    ('447e5d70', '5', '3d5af52f', '-');

 

- sql bulk insert 에 대한 script code는 2차원 배열이다

    >> Nested arrays are turned into grouped lists (for bulk inserts), e.g. [['a', 'b'], ['c', 'd']] turns into ('a', 'b'), ('c', 'd')

 

- 2차원 배열 방식으로 다음과 같은 Node.js 코드를 작성할 수 있다

var mysql = require('mysql');

var conn = mysql.createConnection({

    ...

});

 

var sql = "INSERT INTO Test (name, email, n) VALUES ?";

var values = [

    ['demian', 'demian@gmail.com', 1], 

    ['john', 'john@gmail.com', 2], 

    ['mark', 'mark@gmail.com', 3], 

    ['pete', 'pete@gmail.com', 4]

];

 

conn.query(sql, [values], function (err) {

    if (err)

        throw err;

    conn.end();

});

  하지만 다음과 같이 2가지 에러가 발생한다
  1) INSERT INTO TABLE (COLUMN_1, COLUMN_2) VALUES ?
      -> 이렇게만 했을 경우 '?' near 에서 syntax 에러가 남
  2) [[array], [array], [array], ...] 를 그대로 대입하면
      -> Error: Malformed communication packet 에러가 남
  때문에, 본문의 맨위에 적은 코드와 같이 dynamic 하게 작성해줘야 한다

 

 

 

 

번호 제목 글쓴이 날짜 조회 수
56 Node.js로 ES6 코드 실행하기 (Babel) file 황제낙엽 2023.01.07 3
55 자바스크립트 CommonJS 모듈 내보내기/불러오기 (require) file 황제낙엽 2023.01.07 1
54 Node.js에서 ES 모듈(import/export) 사용하기 file 황제낙엽 2023.01.07 1
53 CommonJS 와 ES 의 Module 시스템 황제낙엽 2023.01.07 1
52 [session] 기본 - Express-session 기반 로그인 세션 관리 황제낙엽 2022.01.03 1
51 [session] 기본 - 2 file 황제낙엽 2022.01.03 0
50 [session] 기본 - 1 황제낙엽 2022.01.03 1
49 [T아카데미] Node.js 프로그램 기초부터 응용까지 강좌 모음 황제낙엽 2021.03.15 29
» Node.js 에서 Bulk INSERT 를 하는 방법 (multi insert) 황제낙엽 2021.02.02 663
47 mysql, mysql2 모듈 버전 비교 황제낙엽 2021.01.31 269
46 [T아카데미/Node.js 프로그래밍] 프로그램 흐름 제어 (콜백지옥, Async, Promise) file 황제낙엽 2021.01.27 17
45 ORM 툴 Sequelize file 황제낙엽 2021.01.27 12
44 [connection과 pool-05] pool 생성이 너무 많은 경우의 database에서의 에러 - Too many connections file 황제낙엽 2021.01.27 50
43 [connection과 pool-04] connection pool 에서의 Transaction을 이용한 commit 과 rollback 황제낙엽 2021.01.27 64
42 [connection과 pool-03] mysql.createPool 과 connection.query 황제낙엽 2021.01.27 383
41 [connection과 pool-02] mysql.createPool 과 pool.query 황제낙엽 2021.01.27 23
40 [connection과 pool-01] mysql.createConnection 과 connection.query 황제낙엽 2021.01.27 39
39 [T아카데미/Node.js 프로그래밍/MySQL] createPool, getConnection 의 간단한 예제 (강의 예제) 황제낙엽 2021.01.27 49
38 여러 개의 데이터 베이스 연결을 동시에 관리하는 PoolCluster 황제낙엽 2021.01.16 2205
37 connetion pooling 과 connection leak 황제낙엽 2021.01.16 35