Go言語[Golang]MariaDBに接続してTRUNCATEしINSERTする

Share on:

この記事は約2 分で読めます。

目次

mysqlパッケージのインストール

1$ go get github.com/go-sql-driver/mysql

Tweet実行コード

 1package main
 2
 3import (
 4	"database/sql"
 5	_ "github.com/go-sql-driver/mysql"
 6)
 7
 8func main() {
 9	// データベースに接続する
10	db, err := sql.Open("mysql", "DBユーザー名:DBパスワード@/DB名")
11    if err != nil {
12        panic(err)
13    }
14	defer db.Close()
15
16	// テーブル空にする
17	stmt, err := db.Prepare("TRUNCATE `テーブル名`")
18	if err != nil {
19		panic(err.Error())
20	}
21	defer stmt.Close()
22	_, err = stmt.Exec() // TRUNCATE実行
23
24	// テーブルにデータを挿入する
25	stmt, err = db.Prepare("INSERT INTO `テーブル名` (`カラム名1`, `カラム名2`, `カラム名3`) VALUES (?, ?, ?)")
26	if err != nil {
27		panic(err.Error())
28	}
29	defer stmt.Close()
30	_, err = stmt.Exec("データ1", "データ2", "データ3") // INSERT実行
31}

解説

  • _ “github.com/go-sql-driver/mysql”
  • アンダースコア「_」をつけます。mysqlパッケージのinitを呼び出すのみとなります。
  • データベース接続
  • db, err := sql.Open(“mysql”, “DBユーザー名:DBパスワード@/DB名”)
  • サンプル:db, err := sql.Open(“mysql”, “gouser:gomyapasswd@/go_database”)
  • テーブルを空にする
  • stmt, err := db.Prepare(“TRUNCATE `テーブル名`”)
  • _, err = stmt.Exec()
  • テーブルにデータを挿入する
  • stmt, err = db.Prepare(“INSERT INTO `テーブル名` (`カラム名1`, `カラム名2`, `カラム名3`) VALUES (?, ?, ?)")
  • _, err = stmt.Exec(“データ1”, “データ2”, “データ3”)
  • プレースホルダーに値をセットしてINSERTします。

テーブルを空にするのもデータを挿入するのも、データベースへの接続に成功したら、SQLをPrepareして、Exec()するだけです。

他の言語から移行された人もわかりやすい構造になっっていると思います。