いつもお世話になります。goのdatabase/sqlについて、教えてください。
以下のソースは、csvで取得したデータをmysqlに書き込む処理です。
書き込む直前に書き込むデータがすでに登録してあるかどうかチェックしたいのです。
select * from user where id = 1
のようなsqlを実行したいです。
以下のように作成したのですが、
rows, err = db.Query("select * from user where id = ? ", record[i][0])
のところでエラーが出てうまくいきません。
command-line-arguments
./go_mysql_insert_sample.go:40:3: undefined: rows
sqlはwhereで絞りたいのですが、どのようにすればいいのでしょうか。ご教授をお願いします。
package main import ( "database/sql" "encoding/csv" "fmt" "os" _ "github.com/go-sql-driver/mysql" ) type User struct { Id int Nickname string } func main() { db, err := sql.Open("mysql", "root:99999999@tcp(127.0.0.1:33060)/myapp") defer db.Close() if err != nil { panic(err) } file, err := os.Open("sample_users.csv") if err != nil { panic(err) } defer file.Close() reader := csv.NewReader(file) reader.FieldsPerRecord = -1 record, err := reader.ReadAll() if err != nil { panic(err) } for i := 0; i < len(record); i++ { fmt.Println(record[i][0]) fmt.Println(record[i][1]) rows, err = db.Query("select * from user where id = ? ", record[i][0]) if len(rows) > 0 { fmt.Println("登録できません。id: " + record[i][0]); } else { _, err = db.Exec("insert into user values (?, ?) ", record[i][0], record[i][1]) } } }
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/04 22:53