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 + 아두이노 연동 제어 실험 file 황제낙엽 2017.01.02 3147
55 여러 개의 데이터 베이스 연결을 동시에 관리하는 PoolCluster 황제낙엽 2021.01.16 2395
54 빠르게 훝어 보는 node.js - #4 웹개발 프레임웍 Express 1/2 file 황제낙엽 2016.08.03 1055
» Node.js 에서 Bulk INSERT 를 하는 방법 (multi insert) 황제낙엽 2021.02.02 993
52 Node.js란? 황제낙엽 2012.11.15 803
51 [connection과 pool-03] mysql.createPool 과 connection.query 황제낙엽 2021.01.27 624
50 RESTful API 황제낙엽 2020.07.13 572
49 빠르게 훝어 보는 node.js - #3 Event,Module,NPM file 황제낙엽 2016.08.03 409
48 express-sse 모듈과 EventEmitter 황제낙엽 2020.09.20 376
47 mysql, mysql2 모듈 버전 비교 황제낙엽 2021.01.31 342
46 express 4.16부터는 body-parser를 내장한다 황제낙엽 2020.12.06 336
45 빠르게 훝어보는 node.js - #1node.js 소개 및 내부구조 file 황제낙엽 2016.08.03 305
44 urlencode : request params의 한글 처리 황제낙엽 2020.12.06 205
43 [Deprecated] request / request 황제낙엽 2020.08.26 202
42 Node.js , NPM 관련 명령어 정리 황제낙엽 2020.09.10 197
41 mysql basic (mysql 설치, 접속, 조회) 황제낙엽 2021.01.12 181
40 node js 학습 링크 목록 황제낙엽 2017.01.05 171
39 빠르게 훝어 보는 node.js - #5 웹개발 프레임웍 Express 2/2 file 황제낙엽 2016.08.03 166
38 [connection과 pool-04] connection pool 에서의 Transaction을 이용한 commit 과 rollback 황제낙엽 2021.01.27 165
37 google oauth 인증 (구글 로그인) file 황제낙엽 2020.11.12 158