Source File: ex26a/main.go
package main
import (
"log"
_ "github.com/mattn/go-sqlite3"
"github.com/jmoiron/sqlx"
"encoding/json"
"os"
)
type Customer struct {
Id int64 `db:"id"`
Name string `db:"name"`
Address string `db:"address"`
City string `db:"city"`
Zip string `db:"zip"`
}
func main() {
customers := []Customer{}
json_data, err := os.ReadFile("customers.json")
if err != nil { log.Fatal(err) }
err = json.Unmarshal(json_data, &customers)
if err != nil { log.Fatal(err) }
db, err := sqlx.Connect("sqlite3", "db.sqlite3")
if err != nil { log.Fatal(err) }
tx := db.MustBegin()
for _, customer := range customers {
_, err = tx.NamedExec(`INSERT INTO customer
(name, address, city, zip) VALUES
(:name, :address, :city, :zip)`, customer)
if err != nil { log.Fatal(err) }
}
tx.Commit()
}