golangでh2database
[tag:]
h2databaseにはpostgresqlプロトコルで接続できると
書いてあるのだが、ちょっと前に試したときにはsql.Openで
失敗してしまっていた。
久々に試したところ、h2の起動の仕方が悪かったらしく、
無事golangからいじれるようになった。
環境
- Linux Mint 17.2 Rafaela
- golang1.7.1 linux/amd64
- h2-1.4.189
1. h2の起動
h2のフォルダにh2.shがあるので、/bin/sh h2.shで起動していた。
h2.shの中で、
java -cp h2*.jar org.h2.tools.Console "$@"
として起動していたのを、
java -cp h2*.jar org.h2.tools.Server "$@"
に変更。
起動時に
TCP server running at tcp://アドレス:ポート (only local connections)
PG server running at pg://アドレス:ポート (only local connections)
Web Console server running at http://アドレス:ポート (only local connections)
と出るので、PGサーバのアドレスとポートを把握する。
2. golangで開く
コードはこんな感じだ。
(sql.Open()の引数が長くなったので改行してあるが、実行時はつなげる必要あり)
package main
import (
"database/sql"
"fmt"
"log"
_ "github.com/lib/pq"
)
func main() {
db, err := sql.Open("postgres", "host=アドレス port=ポート user=ユーザ名 dbname=DBファイル名;
MODE=PostgreSQL sslmode=disable")
if err != nil {
log.Fatal(err)
}
defer db.Close()
rows, err := db.Query(`select id from info`)
if err != nil {
log.Fatal(err)
}
defer rows.Close()
for rows.Next() {
var id string
rows.Scan(&id)
fmt.Println(id)
}
}
これでデータ整理でさらに楽できる。