Rumah  >  Artikel  >  pangkalan data  >  Cara mengimport data ke dalam pangkalan data MySQL menggunakan bahasa Go

Cara mengimport data ke dalam pangkalan data MySQL menggunakan bahasa Go

WBOY
WBOYasal
2023-06-17 12:49:401865semak imbas

Cara menggunakan bahasa Go untuk mengimport data ke dalam pangkalan data MySQL

MySQL ialah pangkalan data hubungan yang sangat popular pada masa ini. Semakin ramai pembangun memilih untuk menggunakan bahasa Go untuk berinteraksi dengan data MySQL gunakan bahasa Go untuk mengimport data ke dalam pangkalan data MySQL.

  1. Tentukan struktur data yang diimport
    Sebelum mengimport data, kita perlu terlebih dahulu menentukan struktur data yang diimport, iaitu struktur jadual, seperti medan jadual, jenis, kunci utama, dsb. , untuk memastikan ia konsisten dengan pangkalan data MySQL Struktur jadual kekal konsisten.
  2. Sediakan sumber data
    Dalam bahasa Go, fail dalam CSV, JSON, XML dan format lain boleh digunakan sebagai sumber data untuk import. Berikut menggunakan fail CSV sebagai contoh:

    id,name,age,gender
    1,张三,18,男
    2,李四,20,男
    3,王五,22,女

    Seperti yang anda boleh lihat daripada contoh di atas, setiap baris data dipisahkan dengan koma Baris pertama ialah nama medan dan baris berikut ialah data khusus rekod.

  3. Menyambung ke pangkalan data MySQL
    Dalam bahasa Go, anda boleh menggunakan pustaka pihak ketiga untuk menyambung ke pangkalan data MySQL dan melaksanakan pernyataan SQL untuk melengkapkan import data. Secara khusus, anda boleh menggunakan pustaka go-sql-driver/mysql dan menggunakan fungsi Open() untuk menyambung ke pangkalan data MySQL.

Kod sampel:

import (
    "database/sql"
    _ "github.com/go-sql-driver/mysql" 
)

db, err := sql.Open("mysql", "user:password@tcp(your-mysql-ip:port)/your-database-name")
if err != nil {
    panic(err.Error())
}
defer db.Close()  // 注意关闭数据库连接
  1. Sediakan pernyataan SQL
    Selepas menyambung ke pangkalan data MySQL, kami perlu menyediakan pernyataan SQL untuk memasukkan data. Di sini kita boleh menggunakan fungsi fmt.Sprintf() Golang untuk menjana pernyataan SQL secara dinamik Ambil perhatian bahawa serangan suntikan SQL perlu dicegah.

Kod contoh:

sqlStr := "INSERT INTO your-table-name(id, name, age, gender) VALUES (%d, '%s', %d, '%s')"
  1. Membaca fail CSV
    Menggunakan pakej csv terbina dalam bahasa Go, anda boleh membaca data dalam fail CSV dengan mudah . Gunakan fungsi NewReader() untuk mencipta objek fail CSV dan gunakan fungsi Read() untuk membaca setiap baris data.

Kod contoh:

import (
    "bufio"
    "encoding/csv"
    "os"
)

csvFile, err := os.Open("your-csv-file.csv")
if err != nil {
    panic(err)
}
defer csvFile.Close()
reader := csv.NewReader(bufio.NewReader(csvFile))
for {
    line, err := reader.Read()
    if err == io.EOF {
        break
    } else if err != nil {
        panic(err)
    }
    // TODO: 将读取到的数据进行插入操作
}
  1. Lakukan operasi sisipan
    Selepas membaca setiap baris data dalam fail CSV, kita perlu memasukkan data ke dalam pangkalan data MySQL . Gunakan fungsi Exec() untuk melaksanakan pernyataan SQL dan menyelesaikan operasi pemasukan data.

Kod contoh:

query := fmt.Sprintf(sqlStr, id, name, age, gender)
_, err = db.Exec(query)
if err != nil {
    panic(err)
}
  1. Kod penuh
    Berikut ialah kod lengkap yang ditulis melalui langkah di atas:

    import (
     "bufio"
     "database/sql"
     "encoding/csv"
     "fmt"
     "io"
     "os"
     _ "github.com/go-sql-driver/mysql"
    )
    
    func main() {
     db, err := sql.Open("mysql", "user:password@tcp(your-mysql-ip:port)/your-database-name")
     if err != nil {
         panic(err.Error())
     }
     defer db.Close()
    
     sqlStr := "INSERT INTO your-table-name(id, name, age, gender) VALUES (%d, '%s', %d, '%s')"
     csvFile, err := os.Open("your-csv-file.csv")
     if err != nil {
         panic(err)
     }
     defer csvFile.Close()
    
     reader := csv.NewReader(bufio.NewReader(csvFile))
     for {
         line, err := reader.Read()
         if err == io.EOF {
             break
         } else if err != nil {
             panic(err)
         }
         id := line[0]
         name := line[1]
         age := line[2]
         gender := line[3]
    
         query := fmt.Sprintf(sqlStr, id, name, age, gender)
         _, err = db.Exec(query)
         if err != nil {
             panic(err)
         }
     }
    }

Gunakan kod di atas untuk mengimport data daripada fail CSV ke dalam pangkalan data MySQL. Perlu diingat bahawa apabila menggunakan fungsi Exec() untuk melaksanakan pernyataan SQL, data yang dimasukkan perlu ditukar kepada jenis data dan ralat dikendalikan untuk mengelakkan kegagalan pemasukan data yang disebabkan oleh ralat jenis data. Pada masa yang sama, perhatian mesti diberikan untuk mencegah serangan suntikan SQL, dan melarikan diri diperlukan apabila menggunakan pernyataan SQL yang dijana secara dinamik.

Atas ialah kandungan terperinci Cara mengimport data ke dalam pangkalan data MySQL menggunakan bahasa Go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn