2016-05-14 10 views
3

Golangアプリケーションでhttps://github.com/mattn/go-sqlite3を使用しています。私は複数のデータベースを使用する必要があり、Golang(http://sqlite.org/lang_attach.html)でATTACHとDETACHを使用できるかどうか疑問に思っていました。私は2つのデータベース接続を作成し、アプリケーション内のデータを参加除き、この問題に取り組むためにどのように他を知らないので、私は、今、任意のコードを持っていないGolangでSQLite ATTACHとDETACHを使用できます

db1, err := sql.Open("sqlite3", "./db1.db") 

db2, err := sql.Open("sqlite3", "./db2.db") 

// query db1 and db2 
// put into map 
// join data 

をそれははるかに容易になるだろうあなたが使用できる場合:

attach database database1.db as db1; 
attach database database2.db as db2; 

select 
    * 
from 
    db1.SomeTable a 
    inner join 
    db2.SomeTable b on b.SomeColumn = a.SomeColumn; 

答えて

6

あなたはデータベースをアタッチすることができます、あなたは(簡潔にするためにエラーチェックを省略した)最初のデータベースを開いた後、SQLでそれを行うだろう:

db1, err := sql.Open("sqlite3", "./db1.db") 
defer db1.Close() 

s := "attach database '/path/to/db2.db' as db2;" 

_, err = db.Exec(s) 

s = `select * 
    from db1.SomeTable a 
    inner join db2.SomeTable b on b.SomeColumn = a.SomeColumn; ` 

results, err := db.Query(s) 
defer results.Close() 

//process results ... 

_, err = db.Exec("detach database db2;") 
関連する問題