2016-09-24

golangでh2database

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)
    }
}

これでデータ整理でさらに楽できる。

No comments:

Post a Comment