Go 言語を使用して MySQL データベースにデータをインポートする方法

WBOY
リリース: 2023-06-17 12:49:40
オリジナル
1919 人が閲覧しました

Go 言語を使用して MySQL データベースにデータをインポートする方法

MySQL は現在非常に人気のあるリレーショナル データベースです。ますます多くの開発者が Go 言語を使用してデータを MySQL とやり取りすることを選択します。この記事では、次のことを紹介します。 Go 言語を使用してデータを MySQL データベースにインポートする方法。

  1. インポートされたデータ構造を決定する
    データをインポートする前に、まずインポートされたデータ構造、つまりテーブルのフィールド、型、主キーなどのテーブル構造を決定する必要があります。 、MySQL データベースとの一貫性を確保するため、テーブル構造の一貫性が保たれます。
  2. データソースの準備
    Go言語では、CSV、JSON、XMLなどの形式のファイルをインポート用のデータソースとして使用できます。以下は例として CSV ファイルを使用しています:

    id,name,age,gender
    1,张三,18,男
    2,李四,20,男
    3,王五,22,女
    ログイン後にコピー

    上の例からわかるように、データの各行はカンマで区切られています。最初の行はフィールド名で、次の行は特定のデータです。記録。

  3. MySQL データベースへの接続
    Go 言語では、サードパーティのライブラリを使用して MySQL データベースに接続し、SQL ステートメントを実行してデータのインポートを完了できます。具体的には、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()  // 注意关闭数据库连接
ログイン後にコピー
  1. SQL ステートメントの準備
    MySQL データベースに接続した後、データを挿入するための SQL ステートメントを準備する必要があります。ここでは、Golang の fmt.Sprintf() 関数を使用して SQL ステートメントを動的に生成できますが、SQL インジェクション攻撃を防ぐ必要があることに注意してください。

サンプルコード:

sqlStr := "INSERT INTO your-table-name(id, name, age, gender) VALUES (%d, '%s', %d, '%s')"
ログイン後にコピー
  1. CSV ファイルの読み取り
    Go 言語に組み込まれている 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: 将读取到的数据进行插入操作
}
ログイン後にコピー
  1. 挿入操作の実行
    CSV ファイル内のデータの各行を読み取った後、データを MySQL データベースに挿入する必要があります。 。 Exec() 関数を使用して SQL ステートメントを実行し、データ挿入操作を完了します。
#サンプル コード:

query := fmt.Sprintf(sqlStr, id, name, age, gender)
_, err = db.Exec(query)
if err != nil {
    panic(err)
}
ログイン後にコピー

  1. 完全なコード

    以下は、上記の手順で記述された完全なコードです:

    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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート