Узел MSSQL не может вставить массив - PullRequest
0 голосов
/ 29 января 2019

Я хочу вставить много строк одновременно с данными массива.

Мой массив выглядит следующим образом

[ [ '1234' ],
  [ '5678' ],
  [ '9123' ]... ]

и мой код запроса

const sql = require('mssql');

const config = {
    user: 'sa',
    password: 'pass',
    server: 'ip',
    database: 'db'
};

async function get_numbers() {
    try {
        let pool = await new sql.ConnectionPool(config).connect();
        var qstring = `INSERT INTO numbers (gen_number) VALUES ?`;
        pool.request().query(qstring, mins, function (err, result) {
            if (err) throw err;
        });
        //pool.close();
    } catch (err) {
        console.log(err);
    }
};

Ноэто дает неправильный синтаксис рядом?ошибка.

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Для этой цели в библиотеке mssql есть метод bulk .

const table = new sql.Table('numbers');
table.create = false; // presuming table already exists
table.columns.add('gen_number', sql.Int, { nullable: false });
// Add rows
numArr.forEach(x => table.rows.add(x));

const request = new sql.Request();
request.bulk(table, (err, result) => {
  // ... error checks
})
0 голосов
/ 29 января 2019

Я предполагаю, что вы хотите вставить содержимое массива 1234,5678 .. в БД.Вы можете использовать

следующий запрос

var array = [ [ '1234' ], [ '5678' ],  [ '9123' ]... ];

var query = `var query = `INSERT INTO numbers (gen_number) VALUES ${array.join().split(",").map(i => '(' + i + ')').join()}``  

Это просто объединение содержимого массива и предоставление вам строки, соответствующей синтаксису SQL, для вставки нескольких значений в один оператор.

Приведенный выше запрос приведет к чему-то вроде

"INSERT INTO numbers (gen_number) VALUES 1234,5678,9123"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...