PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да импортирам редове в Postgresql от STDIN?

github.com/lib/pq пакетните документи всъщност имат пример как да правите това, което искате. Ето адаптирания текст на цялата програма:

package main

import (
    "database/sql"
    "log"

    "github.com/lib/pq"
)

func main() {
    records := [][]string{
        {"Rob", "Pike"},
        {"Ken", "Thompson"},
        {"Robert", "Griesemer"},
    }

    db, err := sql.Open("postgres", "dbname=postgres user=postgres password=postgres")
    if err != nil {
        log.Fatalf("open: %v", err)
    }
    if err = db.Ping(); err != nil {
        log.Fatalf("open ping: %v", err)
    }
    defer db.Close()

    txn, err := db.Begin()
    if err != nil {
        log.Fatalf("begin: %v", err)
    }

    stmt, err := txn.Prepare(pq.CopyIn("test", "first_name", "last_name"))
    if err != nil {
        log.Fatalf("prepare: %v", err)
    }

    for _, r := range records {
        _, err = stmt.Exec(r[0], r[1])
        if err != nil {
            log.Fatalf("exec: %v", err)
        }
    }

    _, err = stmt.Exec()
    if err != nil {
        log.Fatalf("exec: %v", err)
    }

    err = stmt.Close()
    if err != nil {
        log.Fatalf("stmt close: %v", err)
    }

    err = txn.Commit()
    if err != nil {
        log.Fatalf("commit: %v", err)
    }
}

На моята машина това импортира 1 000 000 записа за около 2 секунди.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Сумата на всички редове с панди с изключение на една

  2. Търсене в пълен текст от PostgreSQL 8.3

  3. hibernate 5 + ZonedDateTime + postgresql включват часова зона и отместване

  4. SqlAlchemy(Flask+Postgres) :Как да актуализирам само конкретен атрибут на json поле?

  5. Rails 5 form_for с масив от квадратчета за отметка