【问题标题】:Inserting multiple values to PostreSQL - pg向 PostgreSQL 中插入多个值 - pg
【发布时间】:2023-03-29 19:59:01
【问题描述】:

我有 2 个变量:

let x = 2;
let y = [1,3,4];

我想将此数据写入用户表,如下所示:

user1 - user2
+---+---+
| 2 | 1 |
+---+---+
| 2 | 3 |
+---+---+
| 2 | 4 |
+---+---+

我有一个客户端对象来进行我不知道如何给出值和查询的查询?:

Client.query("INSERT INTO users (user1, user2) VALUES ($1, $2)", []);

【问题讨论】:

    标签: node.js postgresql pg


    【解决方案1】:

    这样的?

    INSERT INTO users (user1, user2)
    SELECT  2 AS user1
        ,   UNNEST(ARRAY[1,3,4]) AS user2;
    

    我不熟悉node.js,帮不了你。

    【讨论】:

    • UNNEST.. +1 的不错的一个
    【解决方案2】:

    一种可能的方法,在 sql-statement 上使用@FrankHeikens 可靠的答案;)

    pgconfig.json:

    {"user":"myUSerDB","host":"10.220.100.102","database":"mydb","password":"mySuperStrongPassword","port":"5432"}
    

    节点-pg-sql.js:

    var fs = require('file-system');
    var fileNameConfigPGSQL = require('./config/pgconfig.json');
    
    const { Pool } = require('pg');
    
    const pool = new Pool(fileNameConfigPGSQL);
    
    module.exports = {
      query: (text, params, callback) => {
        const start = Date.now()
        return pool.query(text, params, (err, res) => {
          const duration = Date.now() - start
      //    console.log('executed query', { text, duration, rows: res.rowCount })
          callback(err, res)
        })
      },
      getClient: (callback) => {
        pool.connect((err, client, done) => {
          const query = client.query.bind(client)
    
          // monkey patch for the querie method to return last query
          client.query = () => {
            client.lastQuery = arguments
            client.query.apply(client, arguments)
          }
    
          // Timeout of 5 secs
          const timeout = setTimeout(() => {
         //   console.error('A client has been checked out for more than 5 seconds!')
         //   console.error(`The last executed query on this client was: ${client.lastQuery}`)
          }, 5000)
    
          const release = (err) => {
            // calling 'done' method - returns client to the pool
            done(err)
    
            // Clear Timeouts
            clearTimeout(timeout)
    
            // Reset query before the Monkey Patch
            client.query = query
          }
    
          callback(err, client, done)
        })
      }
    }
    
    

    someNodeModule.js

    const db = require('../../../node-pg-sql');
    ....
    ...
    ..
    let x = 2;
    let y = [1,3,4];
    let sqlInsert=`INSERT INTO users (user1, user2)
    SELECT ${x} AS user1
        ,   UNNEST(ARRAY${y}) AS user2;`
    db.query(sqlInsert, (errÌnsert, resInsert) => {
       if (errÌnsert) {
         // handle error
       }
       else {
         // handle success
       }
    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-16
      • 2020-05-08
      • 1970-01-01
      • 2013-06-23
      • 2020-08-18
      • 2022-11-07
      • 1970-01-01
      相关资源
      最近更新 更多