0

我有一个网站,有一个表格我想获取帖子数据(我已经做过)并将其放入数据库中。

数据以 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 表中的方法,它将救我。在文档中对此没有很好的扩展。

当我想将这样的数据添加到表中时,我来自 python 背景 我正在使用 python pandas df to_sql 并设置 sleeting 以添加数据而不是覆盖它。

4

1 回答 1

0

从 SQL Server 2016 开始提供本机 json 支持(更多信息在这里)。

openjson如果您使用的是 SQL Server 2016(或更高版本),您可以将整个 json 传递给 SQL Server,并使用和子句读取存储在 json 中的数据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 } 
于 2018-10-30T10:54:22.870 回答