Mengimport Baris ke PostgreSQL daripada STDIN
Dalam Python, modul subproses menyediakan cara yang mudah untuk menulis data ke PostgreSQL daripada STDIN menggunakan COPY perintah. Walau bagaimanapun, mencapai fungsi yang sama dalam Go melibatkan pendekatan yang berbeza.
Dokumentasi rasmi untuk pakej github.com/lib/pq menawarkan contoh cara mengimport rekod terus daripada STDIN menggunakan fungsi CopyIn. Berikut ialah versi penyesuaian kod yang disediakan:
<code class="go">package main import ( "database/sql" "fmt" "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) } log.Println("Records successfully imported") }</code>
Kod yang disemak ini menggunakan transaksi untuk memastikan sifat atomicity, konsistensi, pengasingan dan ketahanan (ACID) semasa proses import. Fungsi CopyIn membolehkan anda menentukan nama jadual sasaran dan lajur yang akan dimasukkan data.
Data sampel yang disediakan kemudiannya dimasukkan ke dalam jadual "ujian" menggunakan pernyataan yang disediakan. Penyata yang disediakan meningkatkan prestasi dengan menyusun awal pertanyaan SQL, mengurangkan overhed yang dikaitkan dengan penghuraian dan perancangan.
Setelah semua rekod dimasukkan, transaksi dilakukan dan data disimpan secara kekal dalam pangkalan data.
Atas ialah kandungan terperinci Bagaimana untuk Mengimport Baris ke PostgreSQL dari STDIN dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!