Bluemixでデータ分析「dashDB」：LinuxサーバにODBCの設定してみた

Windowsの設定もしたしMacもチャレンジしてみたので仕上げはLinuxへの設定、ということでやってみました。
BIツール等でdashDBに接続したいときはJDBC/ODBC接続になりそうなので、これを一度経験しといて損ないかなと思って、書いてみます。

![スクリーンショット 2016-07-18 11.57.59.png](https://qiita-image-store.s3.amazonaws.com/0/119378/5ccfb454-b91d-b920-6436-415145d4e828.png)


## ちなみに
WindowsやMacへの各種設定はこちらの記事をどうぞ。
**Windows系**
http://qiita.com/azzeten/items/554552a1150da6607d35
http://qiita.com/azzeten/items/8b8179d8f9b3e8f7199d
**Mac系**
http://qiita.com/azzeten/items/94a5e89d7b5cb8148a00


## 今日の作業の流れ
・dashDBのWEB画面からパッケージをダウンロード
・ドライバのインストール
・設定
・接続テスト
・おまけ情報（SPSS Modeler Serverと接続したいときは？）

では、やってみよー。

###dashDBのWEB画面からパッケージをダウンロード

・dashDBのWEB画面の「Connect」→「Download Tools」をクリック
・Linuxのパッケージをクリックしてダウンロード
![スクリーンショット 2016-07-18 15.49.40.png](https://qiita-image-store.s3.amazonaws.com/0/119378/8ad022bf-6c53-4f40-7168-717ec352b7f0.png)

・同じく「Connect」→「Connection Information」からホスト名やポート番号、DB名等の情報をメモ帳か何かにコピペします（あとで使います）。


###ドライバのインストール

**ファイルを解凍**

```shell-session:解凍
[root@localhost tmp]# tar xvzf ibm_data_server_driver_package_linuxx64_v10.5.tar.gz
```
```shell-session:解凍後のフォルダへ移動
[root@localhost dsdriver]# cd dsdriver
```



**インストールにはkshが必要なので入っていない場合は事前にインストール**

```shell-session:kshのインストール
[root@localhost dsdriver]# yum install ksh
```

**インストーラ実行＆インストール**

```shell-session:インストールスクリプトを実行
[root@localhost dsdriver]# ./installDSDriver
-
'installDSDriver' script has started ...
-- Unzipping and Copying each driver files to install path ...  
--> SUCCESS
（中略）- 
'installDSDriver' completed successfully.- Check /tmp/dsdriver/./installDSDriver.log file for complete details.-
```

**環境変数設定**

```shell-session:設定ファイルに実行権限をつけて実行
[root@localhost dsdriver]# cd /tmp/dsdriver/
[root@localhost dsdriver]# chmod 777 db2profile
[root@localhost dsdriver]# . db2profile
```


###設定ファイルの書き換え、ライブラリ設定

方法は2つあります。方法1、方法2どちらかだけでOKです。

#### 方法1:コマンドでファイル書き換え（DSN定義）

```shell-session:書き換え
[root@localhost dsdriver]#db2cli  writecfg add -database BLUDB -host dashdb-XXXXXXXXXX.services.dal.bluemix.net -port 50000

[root@localhost dsdriver]#db2cli writecfg add -dsn dashTest -database BLUDB -host dashdb-XXXXXXXXXX.services.dal.bluemix.net -port 50000
```

これをやるとdb2dsdriver.cfgがこの設定の通りに書き換えられます。


#### 方法2:直接ファイルを書き換え


**テンプレートとする設定ファイルをコピーする**


```shell-session:コマンドでDSN定義
[root@localhost cfg]# cd cfg
[root@localhost cfg]# cp -a db2cli.ini.sample db2cli.ini
[root@localhost cfg]# cp -a db2dsdriver.cfg.sample db2dsdriver.cfg
```

**ファイルの書き換え**

それぞれ以下のように記述（赤字の部分は自身の環境に変えてください）dsnの名前はこの後も統一してください。

```xml:db2dsdriver.cfgの書き換え
<configuration> 
　<databases>    
　　<database host="dashdb-XXXXXXXXXX.services.dal.bluemix.net" name="BLUDB" port="50000” />  
　</databases>  
　<dsncollection>    
　　<dsn alias=“dashTest” host=“dashdb-XXXXXXXXXX.services.dal.bluemix.net” name=“BLUDB” port=“50000”/>  　</dsncollection>
</configuration>
```
dsn aliasという項目で、DSN名を指定していますので、これは後述の設定とも合わせましょう。

```:db2cli.iniの書き換え
[dashTest]
Database=BLUDB
Protocol=TCPIP
Port=50000
Hostname=dashdb-XXXXXXXXXX.services.dal.bluemix.net
```


### ライブラリのシンボリックリンクを貼り直し

```shell-session:libフォルダ内のライブラリでリンクをはりなおす
[root@localhost lib]# pwd
/tmp/dsdriver/lib 

[root@localhost lib]# rm –rf libdb2o.so
[root@localhost lib]# ln –s libdb2o.so.1 libdb2o.so
```

最終的にls -laした結果が以下のようになればOKです。

```
lrwxrwxrwx  1 19180 7777       12  5月  7  2015 libdb2o.so -> libdb2o.so.1
-r-xr-xr-x  1 19180 7777 34451617  5月  7  2015 libdb2o.so.1
```

ここまでで設定自体は終了です。

### 接続テスト
参考URL　　http://www.unixodbc.org/doc/db2.html

まずはインストール

```shell-session:インストール
[root@localhost lib]# yum install unixODBC unixODBC-devel
```

そして設定ファイルを以下のように書き換えます。
ファイルのパスは **isql -j** コマンドで確認できます。

```shell-session:設定ファイル：odbcinst.ini
[root@localhost lib]# cat /etc/odbcinst.ini

[dashtest]
Description     = dashtest
Driver          = /tmp/dsdriver/lib/libdb2o.so
```
```shell-session:設定ファイル：odbc.ini
[root@localhost lib]# cat ~/.odbc.ini
[dashtest]
Description     = dashDB用
Driver      	= dashtest
```

接続してみます。

```shell-session
[root@localhost lib]# isql -v dashtest username password
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> select * from ishigaki limit 5;
+-----------+------+------+------+
| DATE      | AVG  | HIGH | LOW  |
+-----------+------+------+------+
| 2015-04-19| 28.2 | 26.5 | 24.4 |
| 2015-04-20| 28.7 | 28.5 | 22.6 |
| 2015-04-21| 25.1 | 24.7 | 20.8 |
| 2015-04-22| 25.3 | 24.1 | 21.1 |
| 2015-04-23| 27.2 | 26.9 | 22.0 |
+-----------+------+------+------+
SQLRowCount returns -1
5 rows fetched

```

**OK!!**

### おまけ情報（SPSS Modeler Serverと接続したいときは？）
http://www.ibm.com/developerworks/library/ba-pp-spss-page660/index.html?ca=drs