Вставка нескольких строк в базу данных sqlite одновременно - PullRequest
0 голосов
/ 21 января 2019

Я хочу вставить несколько строк в базу данных sqlite, используя один оператор вставки.

В Node JS библиотека sqlite3 позволяет нам делать то, что указано здесь .

Но в этом уроке только один столбец, я столкнулся с проблемой при вставке строк с несколькими столбцами.

var csv = require('csv');
var fs = require('fs');
const sqlite3 = require('sqlite3').verbose();


// opening the database connection
let db = new sqlite3.Database('CSVtoDB_CSVParse//sample.db');

var parser = csv.parse({delimiter: ','}, function(err, data) {
    console.log(data);    
    languages = data;
    let placeholders = languages.map((language) => '(?,?)').join(',');
    let sql = 'INSERT INTO sample VALUES ' + placeholders;

    // output the INSERT statement
    console.log(sql);

    db.run(sql, languages, function(err) {
    if (err) {
        return console.error(err.message);
    }
    console.log(`Rows inserted ${this.changes}`);
    });

});

fs.createReadStream('CSVtoDB_CSVParse/sample1.csv').pipe(parser);

То, что я получаю в объекте данных после анализа CSV, выглядит следующим образом:

[ [ 'id', 'name' ],
  [ '1', 'A' ],
  [ '2', 'B' ],
  [ '3', 'C' ],
  [ '4', 'D' ],
  [ '5', 'E' ],
  [ '6', 'F' ],
  [ '7', 'G' ],
  [ '8', 'H' ],
  [ '9', 'I' ],
  [ '10', 'J' ] ]

Но после вставки данные моей таблицы базы данных выглядят так:

sqlite> select * from sample;
|
|
|
|
|
|
|
|
|
|
|

Выход:

  [ '1', 'A' ],
  [ '2', 'B' ],
  [ '3', 'C' ],
  [ '4', 'D' ],
  [ '5', 'E' ],
  [ '6', 'F' ],
  [ '7', 'G' ],
  [ '8', 'H' ],
  [ '9', 'I' ],
  [ '10', 'J' ] ]
INSERT INTO sample VALUES (?,?),(?,?),(?,?),(?,?),(?,?),(?,?),(?,?),(?,?),(?,?),(?,?),(?,?)
Rows inserted 11

Кто-нибудь сталкивался с такой проблемой? Заранее спасибо за помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...