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 3038
55 여러 개의 데이터 베이스 연결을 동시에 관리하는 PoolCluster 황제낙엽 2021.01.16 2206
54 빠르게 훝어 보는 node.js - #4 웹개발 프레임웍 Express 1/2 file 황제낙엽 2016.08.03 1012
53 Node.js란? 황제낙엽 2012.11.15 765
» Node.js 에서 Bulk INSERT 를 하는 방법 (multi insert) 황제낙엽 2021.02.02 666
51 RESTful API 황제낙엽 2020.07.13 528
50 [connection과 pool-03] mysql.createPool 과 connection.query 황제낙엽 2021.01.27 384
49 mysql, mysql2 모듈 버전 비교 황제낙엽 2021.01.31 269
48 express 4.16부터는 body-parser를 내장한다 황제낙엽 2020.12.06 268
47 빠르게 훝어보는 node.js - #1node.js 소개 및 내부구조 file 황제낙엽 2016.08.03 267
46 express-sse 모듈과 EventEmitter 황제낙엽 2020.09.20 265
45 Node.js , NPM 관련 명령어 정리 황제낙엽 2020.09.10 141
44 [Deprecated] request / request 황제낙엽 2020.08.26 123
43 빠르게 훝어 보는 node.js - #3 Event,Module,NPM file 황제낙엽 2016.08.03 122
42 node js 학습 링크 목록 황제낙엽 2017.01.05 118
41 빠르게 훝어 보는 node.js - #5 웹개발 프레임웍 Express 2/2 file 황제낙엽 2016.08.03 105
40 nodemon 설치 및 활용 file 황제낙엽 2020.08.16 102
39 urlencode : request params의 한글 처리 황제낙엽 2020.12.06 99
38 google oauth 인증 (구글 로그인) file 황제낙엽 2020.11.12 84
37 빠르게 훝어 보는 node.js - #6 MongoDB 연동 (mongo-native) file 황제낙엽 2016.08.03 82