узел sql сервер вставляет данные в табель - PullRequest
0 голосов
/ 30 октября 2018

У меня есть веб-сайт, на котором есть форма, которую я хотел бы получить для публикации (я уже сделал это) и поместить ее в базу данных.

Данные приходят в формате JSON и выглядят так:

{ name : "text" , ho : "text" , day : number , m : number } 

У меня также есть таблица SQL-сервера, у которой такое же имя столбца означает:

  • Col1 = имя (nvarchar)
  • Col2 = ho (nvarchar)
  • Col3 = день (numeric)
  • Col4 = m (numeric)

Я пытаюсь вставить данные в базу данных, используя nodejs и mssql moudeul.

Мой код выглядит так:

    let config = {/*the info*/}
    //connect to the data base
    const pool = new sql.ConnectionPool(config , function(err){
    if(err) throw err;
    //get the keys and the values
    let colsName enter code here= Object.keys(theDataObj);
    let values = []
    for(let i = 0; i < colsName.length; i++){
         values.push(theDataObj[colsName[i]]);
         console.log(theDataObj[colsName[i]])//check to see what going in
   pool.request().query(`INSERT INTO ${tabelName}(${colsName}) VALUES (${values})` , function(err , result){
 if(err) throw err;
 console.log(result)
});
    }

});

Каждый раз, когда я пытаюсь запустить этот код, не имеет значения, если я что-то меняю, он возвращает мне ту же ошибку:

имя столбца отсутствует $ {values ​​[0]}

Я имею в виду значение, которое имеет это утверждение.

Значение в массиве значений в позиции 0 или иногда 1.

Если кто-то знает, как я могу вставить данные в sql tabel, это спасет меня. В doc нет хорошего расширения для этого.

Я пришел из фона Python, когда хочу добавить такие данные в таблицу. Я использую python pandas df to_sql и настраиваю сплит, чтобы добавить данные, а не перезаписывать их.

1 Ответ

0 голосов
/ 30 октября 2018

Начиная с SQL Server 2016 доступна встроенная поддержка json (подробнее здесь ).

Если вы используете SQL Server 2016 (или более позднюю версию), вы можете передать весь json на SQL Server и прочитать данные, хранящиеся в json, с помощью openjson и предложения with (это позволит вам указать структуру Ваш JSON). Затем вы можете вставить в свой стол:

declare @json nvarchar(max) = '{ "name" : "text" , "ho" : "text" , "day" : 1 , "m" : 10}'

insert into YOUR_TABLE
select  Col1, Col2, Col3, Col4 
from openjson(@json)
with(   
    Col1 nvarchar(50) '$.name' ,  
    Col2 nvarchar(50) '$.ho',  
    Col3 numeric      '$.day',  
    Col4 numeric      '$.m'  
) 

Обратите внимание, что ваш JSON недействителен: у вас отсутствуют кавычки вокруг имен ключей. Действительная версия вашего JSON должна быть:

{ "name" : "text" , "ho" : "text" , "day" : number , "m" : number } 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...