【问题标题】:node.js - how to insert values from a json array into a sql databasenode.js - 如何将 json 数组中的值插入 sql 数据库
【发布时间】:2019-06-27 13:14:55
【问题描述】:

我有传入的 json 结构,如

{
    "type":1,
    "location":[
        {"lattitude":"0", "longitude":"0"},
        {"lattitude":"0", "longitude":"0"},
        {"lattitude":"0", "longitude":"0"}]
}

我需要将它插入到数据库中

|------|-----------|-----------|
| type | lattitude | longitude |
|------|-----------|-----------|
| 1    | 0         | 0         |
|------|-----------|-----------|
| 1    | 0         | 0         |
|------|-----------|-----------|
| 1    | 0         | 0         |
|------|-----------|-----------|

如何解析 json 并构建 sql 查询?

【问题讨论】:

  • 你的 json 结构是不变的还是变化的? Postgres 有 json 相关的函数,可以直接在 Postgres 函数调用中处理 json 并且不需要构造查询。
  • @KaushikNayak 它总是采用这种形式

标签: sql node.js postgresql


【解决方案1】:

如果你想使用 Postgres 解决方案,你可以这样做

--INSERT INTO yourtab( type,lattitude,longitude)

select jsoncol->>'type' , j->>'lattitude'
             j->>'longitude'
 from
 ( values (:yourjsonstr :: jsonb ) ) as t(jsoncol) cross join 
          lateral jsonb_array_elements(jsoncol->'location')
                                   as j;

DEMO

【讨论】:

    【解决方案2】:

    你可以使用json-sql

    例子:

    var sql = jsonSql.build({
        type: 'insert',
        table: 'users',
        values: {
            name: 'John',
            lastname: 'Snow',
            age: 24,
            gender: 'male'
        }
    });
    
    sql.query
    // insert into users (name, lastname, age, gender) values ($p1, $p2, 24, $p3);
    
    sql.values
    // { p1: 'John', p2: 'Snow', p3: 'male' }
    

    查看文档:https://www.npmjs.com/package/json-sql

    【讨论】:

    • 这比插入多行值快吗?
    • @niga 我认为差别不会很大
    猜你喜欢
    • 2020-03-15
    • 1970-01-01
    • 2014-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-01
    • 2015-06-18
    • 2021-08-31
    相关资源
    最近更新 更多