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

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