使用Go語言進行MySQL資料庫的資料導入的方法
MySQL是目前非常流行的關係型資料庫,越來越多的開發者選擇使用Go語言與MySQL進行資料交互,本文將介紹如何使用Go語言進行MySQL資料庫的資料導入。
準備資料來源
在Go語言中,可以使用CSV、JSON、XML等格式的檔案作為資料來源進行匯入。以下以CSV檔案為例進行介紹:
id,name,age,gender 1,张三,18,男 2,李四,20,男 3,王五,22,女
透過上面的範例可以看到,每行資料以逗號分隔,第一行為欄位名,後面的行為具體的資料記錄。
go-sql-driver/mysql
函式庫,使用Open()
函數連接MySQL資料庫。 範例程式碼:
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() // 注意关闭数据库连接
範例程式碼:
sqlStr := "INSERT INTO your-table-name(id, name, age, gender) VALUES (%d, '%s', %d, '%s')"
csv
套件,可以輕鬆讀取CSV檔案中的數據。使用NewReader()
函數建立一個CSV檔案對象,使用Read()
函數讀取每一行資料。 範例程式碼:
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()
函數執行SQL語句,完成資料的插入操作。 範例程式碼:
query := fmt.Sprintf(sqlStr, id, name, age, gender) _, err = db.Exec(query) if err != nil { panic(err) }
完整程式碼
以下是透過上述步驟編寫的完整程式碼:
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) } } }
使用以上程式碼即可實現從CSV檔案匯入資料到MySQL資料庫。需要注意的是,在使用Exec()
函數執行SQL語句時,需要對插入的資料進行資料類型轉換,並進行錯誤處理,以避免資料類型錯誤導致資料插入失敗。同時也要注意防止SQL注入攻擊,使用動態產生SQL語句時需要轉義處理。
以上是使用Go語言進行MySQL資料庫的資料導入的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!