sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvordan importerer jeg rækker til Postgresql fra STDIN?

github.com/lib/pq pakkedokumenter har faktisk et eksempel hvordan man gør, hvad man vil. Her er den tilpassede tekst til hele programmet:

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)
    }
}

På min maskine importerer dette 1 000 000 poster på cirka 2 sekunder.



  1. Spring Docker container kan ikke få adgang til Postgres Docker container

  2. Muligt at angive unikt indeks med NULL tilladt i Rails/ActiveRecord?

  3. Mysql ERROR 1005 (HY000):Kan ikke oprette tabel 'tmp' (fejlnr:13)

  4. Indstilling af skemanavnet i postgres ved hjælp af R