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.
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.
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() // 注意关闭数据库连接
Kod contoh:
sqlStr := "INSERT INTO your-table-name(id, name, age, gender) VALUES (%d, '%s', %d, '%s')"
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: 将读取到的数据进行插入操作 }
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) }
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!