본문 바로가기
MySql

MySQL 노드를 사용하여 JSON 객체를 mysql로 ​​가져 오는 가장 빠른 방법

by 베이스 공부 2021. 1. 9.
반응형

이전 예를 사용하십니까?
을 사용하여 mysql 테이블을 어떻게 삽입 / 업데이트 할 수 있습니까? 테이블 열 헤더의 이름을 수동으로 지정하지 않고 JSON 개체를 사용합니까? 그리고 비동기를 보장합니다.

var mysql = require('node-mysql');
var conn = mysql.createConnection({
    ...
});


var values = [
    {name:'demian', email: 'demian@gmail.com', ID: 1},
    {name:'john'  , email: 'john@gmail.com'  , ID: 2},
    {name:'mark'  , email: 'mark@gmail.com'  , ID: 3},
    {name:'pete ' , email: 'pete@gmail.com'  , ID: 4}
];

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


   conn.query(sql, [values], function(err) {
        if (err) throw err;
        conn.end();
    })

 

해결 방법

 

다음과 같이 할 수 있습니다.

for(var i = 0; i < values.length; i++){
    var post  = values[i]
    var query = connection.query('INSERT INTO posts SET ?', post, function(err, result) {
         // Finish
    });
}

한 번에 여러 개의 '게시물'을 삽입하는 방법입니다.

INSERT INTO posts (type, details)
  VALUES
  ('Helen', 24),
  ('Katrina', 21),

이와 같은 이름을 얻으려면 첫 번째 값을 반복해야합니다.

var names = [];
for(name in values[0]){
names.push(name);
// That would give you name, email, id
}

그런 다음 삽입 할 고유 한 문자열을 만들어야합니다.

var newvalues = [];
for(var i = 0; i < values.length; i++){
    newvalues.push('(' + values[i].join(',') + ')');
}

그런 다음 쿼리를 실행하려면 :

connection.query('INSERT INTO posts (' + names.join(',') + ') VALUES ' + newvalues.join(',') , function(err, rows, fields) {
  // Result
});

코드를 직접 테스트해야합니다. 이것이 바로 여러분이하는 방법입니다.

 

참조 페이지 https://stackoverflow.com/questions/15367477

 

 

반응형

댓글