如何使用Node JS将JSON数据转换为表并存储到Postgres DB中?

时间:2019-05-29 12:06:44

标签: javascript node.js json postgresql

在将json数据转换为datatable并将其存储在postgresql DB中时,我需要帮助。

例如,

[{"name":"abc", "role":"swe"}, {"name":"xyz", "role":"Tester"}]

我想转换以上数据,或者说将数据存储为具有行和列的表。

我认为我们确实有一个名为“ json”的数据类型,但是它将存储整个json吗?但是我想将在数据库中看到的内容转换为真实表,如下所示,

   name   |  role       
--------------+-------
"abc"     | "swe"
"xyz"     | "Tester

能否请您帮我解析它们?我正在使用Node JS。

任何指针都会有所帮助。非常感谢您的宝贵时间。

2 个答案:

答案 0 :(得分:0)

我认为它将起作用,将您的json转换为对象,并使用npm软件包node-postgres(np)node-sql(sql || sql string builder for node)进行准备并将其插入,请从以下代码中进行引用。

const pg = require('pg');
const sql = require('sql');

let usersToInsert = JSON.parse(`[{"name":"abc", "role":"swe"}, {"name":"xyz", "role":"Tester"}]`);

let User = sql.define({
  name: 'users',
  columns: [
    'name',
    'role'
  ]
});

async function run() {
  let client;
  try {
    client = new pg.Client({
      connectionString: 'postgresql://localhost/node_example'
    });
    await client.connect();
    let query = User.insert(usersToInsert).toQuery();
    console.log(query);
    let {rows} = await client.query(query);
    console.log(rows);
  } catch (e) {
    console.error(e);
  } finally {
    client.end();
  }
}

run();

答案 1 :(得分:0)

可能是您需要的东西?

select jsonb_array_elements(j)->>'name' as name, jsonb_array_elements(j)->>'role' as role 
from (
    select '[{"name":"abc", "role":"swe"}, {"name":"xyz", "role":"Tester"}]'::jsonb as j
) t

如果是这样,您只需执行INSERT INTO .. SELECT即可将数据保存到表中

演示:https://rextester.com/LIV68809

相关问题