各製品の資料を入手。
詳細はこちら →CData
こんにちは!ドライバー周りのヘルプドキュメントを担当している古川です。
Go はオープンソースのプログラミング言語で、高速かつ信頼性の高いソフトウェアを低コストで作成できるのが魅力です。Go とODBC Driver for CSV およびunixODBC を組み合わせて使うことで、CSV のデータにリアルタイムで 接続するアプリケーションを作成できます。本記事では、ODBC Driver for CSV のインストール、unixODBC Driver Manager への設定、そしてCSV に連携するGo アプリケーションの作成までを説明します。
CData ODBC ドライバは、以下のような特徴を持った製品です。
CData ODBC ドライバでは、1.データソースとしてCSV の接続を設定、2.Go 側でODBC Driver との接続を設定、という2つのステップだけでデータソースに接続できます。以下に具体的な設定手順を説明します。
CData ODBC Drivers はUbuntu、Debian、RHEL、CentOS、およびFedora など多くのRed Hat ベースおよびDebian ベースのシステムでサポートされています。 ほかにもいくつかのライブラリやパッケージのインストールが必要ですが、すでにデフォルトでインストールされている場合もあります。詳細はオンラインおよびインストールされるヘルプドキュメントの「はじめに」のセクションを参照してください。
ドライバーのインストール前にシステムにDriver Manager が入っているかを確認してください。本記事では無料のオープンソースDriver Manager であるunixODBC を使います
Ubuntu のようなDebian ベースのシステムでは、APT パッケージマネージャからunixODBC をインストールできます:
$ apt-get install unixODBC unixODBC-dev
Red Hat Linux ベースのシステムでは、yum もしくはdnf からunixODBC をインストールできます:
$ yum install unixODBC unixODBC-devel
unixODBC Driver Manager はDriver の情報をodbcinst.ini ファイルから読み、odbc.ini からデータソースの情報を読みます。 次のコマンドをターミナルに入力して、設定ファイルの配置場所を決めることができます:
$ odbcinst -j
コマンドのアウトプットでODBC データソースのコンフィギュレーションファイルと登録されたODBC Drver のロケーションを表示します。 ユーザーデータソースはodbc.ini ホームフォルダが位置するユーザーアカウントのみからアクセス可能です。システムデータソースはすべてのユーザーからアクセスできます。 このコマンドのアウトプット例は以下です:
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /home/myuser/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
パッケージ形式でドライバーをダウンロードできます。.deb 形式もしくは、.rpm 形式で提供しています。 ファイルをダウンロードしたら、ターミナルからドライバーをインストールします。
ドライバーインストーラーはドライバーをunixODBC に登録し、ODBC 接続をサポートするツールやアプリケーションから利用できるシステムDSN を作成します。T
Ubuntu のようなDebian ベースのシステムでは、sudo で次のコマンドを実行します:
$ dpkg -i /path/to/package.deb
.rpms をサポートするシステムでは、sudo で次のコマンドを実行します:
$ rpm -i /path/to/package.rpm
ドライバーのインストールが終わったら、unixODBC Driver Manager を使って登録されたドライバーを表示し、データソースを定義することができます。
$ odbcinst -q -d
CData ODBC Driver for CSV
...
$ odbcinst -q -s
CData CSV Source
...
unixODBC でCData ODBC Driver for CSV を使用するには、ドライバーがUTF-8 を使用するように設定する必要があります。それには、通常はインストールフォルダのlib フォルダ(/opt/cdata/cdata-odbc-driver-for-csv)に入っているドライバーのINI ファイル(cdata.odbc.csv.ini)を次のように編集する必要があります:
...
[Driver]
DriverManagerEncoding = UTF-16
ドライバーがインストールされると、システムDSN が事前定義されます。システムDSN はシステムデータソースファイル(/etc/odbc.ini)を編集して必要な接続プロパティを定義します。 ユーザー単位のDSN を作成することも可能で、その際には$HOME/.odbc.ini へのアクセスと変更は必要ありません
DataSource プロパティにローカルフォルダ名を設定します。
.csv、.tab、.txt ではない拡張子のファイルを扱う場合には、IncludeFiles 使用する拡張子をカンマ区切りで設定します。Microsoft Jet OLE DB 4.0 driver 準拠の場合にはExtended Properties を設定することができます。別の方法として、Schema.ini ファイルにファイル形式を記述することも可能です。
CSV ファイルの削除や更新を行う場合には、UseRowNumbers をTRUE に設定します。RowNumber はテーブルKey として扱われます。
URI をバケットおよびフォルダに設定します。さらに、次のプロパティを設定して認証します。
URI をCSV ファイルを含むフォルダへのパスに設定します。Box へ認証するには、OAuth 認証標準を使います。 認証方法については、Box への接続 を参照してください。
URI をCSV ファイルを含むフォルダへのパスに設定します。Dropbox へ認証するには、OAuth 認証標準を使います。 認証方法については、Dropbox への接続 を参照してください。ユーザーアカウントまたはサービスアカウントで認証できます。ユーザーアカウントフローでは、以下の接続文字列で示すように、ユーザー資格情報の接続プロパティを設定する必要はありません。
URI をCSV ファイルを含むドキュメントライブラリに設定します。認証するには、User、Password、およびStorageBaseURL を設定します。
URI をCSV ファイルを含むドキュメントライブラリに設定します。StorageBaseURL は任意です。指定しない場合、ドライバーはルートドライブで動作します。 認証するには、OAuth 認証標準を使用します。
URI をルートフォルダとして使用されるフォルダへのパスが付いたサーバーのアドレスに設定します。認証するには、User およびPassword を設定します。
デスクトップアプリケーションからのGoogle への認証には、InitiateOAuth をGETANDREFRESH に設定して、接続してください。詳細はドキュメントの「Google Drive への接続」を参照してください。
[CData CSV Source]
Driver = CData ODBC Driver for CSV
Description = My Description
DataSource = MyCSVFilesFolder
これらのコンフィギュレーションファイルの使い方についての詳細は、インストールされるヘルプドキュメントを参照してください。
Driver Manager のインストール、DSN 設定を終えたら、CSV のデータ に連携するGo アプリケーションを作成します。 まずはODBC データベース向けのGo ドライバーをインストールします。いくつかのオプションがありますが、本記事ではhttps://github.com/alexbrainman/odbc のODBC ドライバーを使います。
Go のODBC ドライバーをインストールするには、GOPATH 環境変数を定義する必要があります:
export GOPATH=$HOME/golang/go
GOPATH が定義されたら、ODBC ドライバー向けのGo ドライバーをインストールすることが可能です:
$ go get github.com/alexbrainman/odbc
これでGo アプリケーションを作って実行する準備ができました。
このサンプルアプリケーションはCSV のデータ に対してシンプルなSQL SELECT クエリを発行し、結果を表示します。$GOPATH/src/cdata-odbc-csv ディレクトリを作成し、次のソースコードをコピーして新しいGo ファイルを作成します。
package main
import (
_ "github.com/alexbrainman/odbc"
"database/sql"
"log"
"fmt"
)
func main() {
db, err := sql.Open("odbc",
"DSN=CData CSV Source")
if err != nil {
log.Fatal(err)
}
var (
city string
totaldue string
)
rows, err := db.Query("SELECT City, TotalDue FROM Customer WHERE FirstName = ?", "Bob")
if err != nil {
log.Fatal(err)
}
defer rows.Close()
for rows.Next() {
err := rows.Scan(&city, &totaldue)
if err != nil {
log.Fatal(err)
}
fmt.Println(city, totaldue)
}
err = rows.Err()
if err != nil {
log.Fatal(err)
}
defer db.Close()
}
ターミナルでGo アプリケーションディレクトリに移動して、アプリケーションをビルドします。
$ go build
アプリケーションのビルド後、アプリケーションを実行してCSV のデータを表示することができます。
$ ./cdata-odbc-csv
このようにCData ODBC ドライバと併用することで、270を超えるSaaS、NoSQL データをGo から扱うことができます。30日の無償評価版が利用できますので、ぜひ自社で使っているクラウドサービスやNoSQL と合わせて活用してみてください。
日本のユーザー向けにCData ODBC ドライバは、UI の日本語化、ドキュメントの日本語化、日本語でのテクニカルサポートを提供しています。