プログラム
フォルダー構造
$ tree -a
.
├── .env
├── config_mariadb.go
├── go.mod
├── go.sum
└── gorm_create.go
gorm_create.go
// ----------------------------------------------------------------
//
// gorm_create.go
//
// Feb/27/2023
//
// ----------------------------------------------------------------
package main
import (
"fmt"
"os"
"gorm.io/gorm"
"gorm.io/driver/mysql"
)
// ----------------------------------------------------------------
func unit_gen_proc (name string,population int,date_mod string) map[string]interface{} {
unit_aa := make (map[string]interface{})
unit_aa["name"] = name
unit_aa["population"] = population
unit_aa["date_mod"] = date_mod
return (unit_aa)
}
// ----------------------------------------------------------------
func data_prepare_proc () map[string](map[string]interface{}) {
dict_aa := make (map[string](map[string]interface{}))
dict_aa["t3321"] = unit_gen_proc ("岡山",897152,"1921-11-12")
dict_aa["t3322"] = unit_gen_proc ("倉敷",429671,"1921-5-21")
dict_aa["t3323"] = unit_gen_proc ("津山",621597,"1921-6-14")
dict_aa["t3324"] = unit_gen_proc ("玉野",952178,"1921-4-30")
dict_aa["t3325"] = unit_gen_proc ("笠岡",417859,"1921-6-24")
dict_aa["t3326"] = unit_gen_proc ("井原",213592,"1921-1-10")
dict_aa["t3327"] = unit_gen_proc ("総社",482967,"1921-10-19")
dict_aa["t3328"] = unit_gen_proc ("高梁",785231,"1921-12-28")
dict_aa["t3329"] = unit_gen_proc ("新見",259718,"1921-5-12")
return (dict_aa)
}
// ----------------------------------------------------------------
func main() {
fmt.Fprintln (os.Stderr,"*** 開始 ***")
dict_aa := data_prepare_proc ()
host,user,password,data_base := config_mariadb_proc()
dsn := user + ":" + password + "@tcp(" + host + ":3306)/" + data_base + "?charset=utf8mb4&parseTime=True&loc=Local"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
panic(err)
}
db.Exec ("drop table cities")
sql_str := "create table cities (id varchar(10),name varchar(20),population int,date_mod date)"
fmt.Println (sql_str)
db.Exec (sql_str)
for key,_ := range dict_aa {
name := dict_aa[key]["name"]
population := dict_aa[key]["population"]
date_mod := dict_aa[key]["date_mod"]
sql_str :="insert into cities (id,name,population,date_mod) values (?,?,?,?)"
db.Exec (sql_str,key,name,population,date_mod)
}
fmt.Fprintln (os.Stderr,"*** 終了 ***")
}
// ----------------------------------------------------------------
.env
config_mariadb.go
はこちら
Go: gorm で MariaDB のバージョンを表示
実行の準備
go mod init create
go mod tidy
実行
go run gorm_create.go config_mariadb.go
確認したバージョン
$ go version
go version go1.20.1 linux/amd64
関連ページ
Go: gorm で MariaDB のデータを読む (Read)
Go: gorm で MariaDB のデータを更新 (Update)
Go: gorm で MariaDB のデータを削除 (Delete)