SQLiteでテーブル存在有無を確認(Golang)

GolangでDBドライバー使ってコードからテーブルの存在有無を確認する方法です。SQLコマンド打てば簡単ですが、コードでチェックするというのはどうやるかしばらく悩みました。以下のstackoverflowから引用しました。

https://stackoverflow.com/questions/56915022/check-if-database-table-exists-using-golang

動作環境でimportしているライブラリ(DBアクセスで必要なのはsqlとsqlite3の2個)、go-sqlite3は使わないけどインポートだけはしないとコンパイルできません。

go-sqlite3のブランクインポートが必要な理由は、

https://maku77.github.io/p/kgzfwdt/

になります。

import (
	"bufio"
	"database/sql"
	"encoding/json"
	"errors"
	"fmt"
	_ "github.com/mattn/go-sqlite3"
	"log"
	"os"
	"strconv"
	"time"

	"go.bug.st/serial"
	"go.bug.st/serial/enumerator"
)

以下がテーブル存在をチェックしているコードになりますが、dateはフィアル名の一部ですね。戻りのerrorコードがnilならテーブル存在、それ以外ならテーブルが存在しないことになります。

	// table exist check
	cmd := "select*from tbl" + date
	_, table_check := db.Query(cmd)			// checked by using return code

	if table_check != nil {

方法は別にSQLite限定ではなくて他のDBでも同じだろうと思います。

 

admin