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) } } }
Exec() 関数を使用して SQL ステートメントを実行する場合、データ挿入エラーの原因となるデータ型エラーを避けるために、挿入されたデータをデータ型に変換し、エラー処理を実行する必要があることに注意してください。同時に、SQL インジェクション攻撃の防止にも注意を払う必要があり、動的に生成された SQL ステートメントを使用する場合はエスケープが必要です。
以上がGo 言語を使用して MySQL データベースにデータをインポートする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。