こんにちは、テクニカルサポートの宮本です。
今回は Amazon Linux 上の Go から、 CData Salesforce ODBC Driver を使って、Salesforce からデータを取得する方法をご紹介します。
手順
それでは Salesforce ODBC Driver をインストールしていきますが、本記事では既にEC2 で Amazon Linux のVM が作成されていることとして進んでいきます。
CData Salesforce ODBC Driver ダウンロード
まずは以下リンクより CData Salesforce ODBC Driver をダウンロードします。
https://www.cdata.com/jp/drivers/salesforce/odbc/
Unix タブを選択してから評価版をダウンロードします。
ダウンロードが完了したら、対象のEC2マシンに先ほどダウンロードした rpm をアップロードします。
Amazon Linux に Go をインストール
Amazon Linux で利用できる Go のバージョンを確認してみます。
cdata
29 golang1.11=latest enabled \
cdata
つぎに、Go をインストールします。
cdata
Installing golang
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
Cleaning repos: amzn2-core amzn2extra-docker amzn2extra-golang1.11
12 metadata files removed
・・・
・・・
GOPATHを設定します。
~
~
~
CData Salesforce ODBC Driver インストール&アクティベート
以下のように既にインストールされていることもありますが、最初に下記コマンドで依存関係をインストールしておきます。
~
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
amzn2-core | 3.7 kB 00:00:00
Package glibc-2.26-48.amzn2.x86_64 already installed and latest version
Package libstdc++-7.3.1-13.amzn2.x86_64 already installed and latest version
Package zlib-1.2.7-18.amzn2.x86_64 already installed and latest version
Package libgcc-7.3.1-13.amzn2.x86_64 already installed and latest version
Nothing to do
~
この状態で Driver をインストールしようとすると、
Error:
Cannot find the 64bit iODBC or unixODBC Driver Manager installed on this machine.
のように iODBC か unixODBC がないと怒られますので、こちらも先にインストールします。
cdata
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
amzn2-core | 3.7 kB 00:00:00
Resolving Dependencies
--> Running transaction
・・・
Complete!
cdata
これで CData ODBC Driver のインストール準備が整いました。
それでは Amazon Linux 上に格納したrpmを実行してインストールしていきます。
cdata
インストールが完了しましたら、install-license.x64 を実行してアクティベートを行います。製品版のアクティベートを行う場合は、半角スペース+プロダクトキーを末尾にセットして実行してください。
cdata
bin
Name: miyamotok
Email: [email protected]
Installing TRIAL license...
Downloading license data...
Verifying license data...
License installation succeeded.
bin
Linux DSN の設定
Driver のインストール&アクティベートが完了したので、次は DSN の設定をしていきます。
現在のDSN設定はこのようになっています。
cdata
unixODBC 2.3.1
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
cdata
Driver 情報を登録します。
cdata
cdata
odbcinst.ini には下記内容を追記します。
登録内容は下記ヘルプをご参照下さい。
https://cdn.cdata.com/help/RFG/jp/odbc/pg_linuxdatadirectmgr.htm
登録されているDriver リストを確認してみる。
cdata
[PostgreSQL]
[MySQL]
[CData ODBC Driver for Salesforce]
cdata
次に DSN を定義します。
cdata
DSN 設定が完了しましたら、isql コマンドでDSN 指定によるSalesforce への接続ができるか確認します。
bin
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL> select name from Lead limit 1
+--------------------------------------------------------------------------------------------------------------------------+
| name |
+--------------------------------------------------------------------------------------------------------------------------+
| Boxer Bertha |
+--------------------------------------------------------------------------------------------------------------------------+
SQLRowCount returns -1
1 rows fetched
SQL>
isql より DSN の指定でSalesforce に接続できるのが確認できました。
Go からSalesforce のデータを取得
Go で ODBC を使用する場合は、GO ODBC というものをインストールしておく必要があります。※git がない場合は、併せてインストールしておきます
bin
bin
これで Go からODBC が利用できる準備が整いました。
今回はSalesforce に登録されている Lead オブジェクトから Name を 10 件取得してみます。
package main
import (
"database/sql"
"fmt"
"log"
_ "github.com/alexbrainman/odbc"
)
func main() {
conn, err := sql.Open("odbc", "DSN=CData Salesforce Source;")
fmt.Println("Connect to CData ODBC Driver by Salesforce")
if err != nil {
log.Fatal(err)
}
if err := conn.Ping(); err != nil {
log.Fatal(err)
}
defer func() {
err := conn.Close()
fmt.Println("CONN CLOSE with", err)
}()
rows, err := conn.Query(`select name from Lead limit 10`)
if err != nil {
log.Fatal(err)
}
for rows.Next() {
var a string
if err := rows.Scan(&a); err != nil {
fmt.Println(err)
}
fmt.Println(a)
}
defer rows.Close()
}
それでは実行してみます。
~ # go run odbc-sf-go.go
Connect to CData ODBC Driver by Salesforce
Boxer Bertha
Cotton Phyllis
Glimpse Jeff
Braund Mike
Feager Patricia
Mcclure Brenda
Maccleod Violet
SnyderTest Kathy
James Tom
Brownell Shelly
~ #
このように Go から DSN 指定でSalesforce のデータを取得することができました。
おわりに
いかがでしたでしょうか。今回はSalesforce を使ってみましたが、Marketo や kintone などのODBC Driver でも同じように利用可能です。 CData ODBC Driver の一覧は以下より確認できます。
CData Software Japan - ODBC Drivers
また、CData ODBC Driver は 30 日間のトライアル利用が可能です。気になるDriver がありましたら、是非お試しください!
関連コンテンツ