kintone データをDB に同期（キャッシュ）する方法

#はじめに
kintone データをDB にバックアップしておくニーズがあります。
・バックアップ
・DB に入れておいて他のアプリやBI から利用

kintone データをDB に入るようにスキーマ化を行うCData ODBC Driver for kintone のキャッシュ機能を使って、SQL Server にkintone の任意のアプリを同期する方法を説明します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/116843/50357c90-e60d-d6f8-6bf8-7e5f52f44483.png)


#利用する環境・アプリ
・Windows 10
・SQL Server 2017 + SQL Server Management Studio
・kintone （評価版あり）[kintone評価版アカウント取得、および、サンプルアプリケーションの作成方法](https://qiita.com/kuwazzy/items/416b9c884892016bcc9f)
・[CData ODBC Driver for kintone](https://www.cdata.com/jp/drivers/kintone/odbc/)（評価版あり）
・Visual Studio 

#同期先のデータベースの作成
SQL Server に新しいデータベースを作っておきます。

この記事では、データベースの認証は「SQL Server 認証モードとWindows 認証モード(S)」にします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/116843/c83e414d-5515-b065-37e8-04098d699bae.png)


オブジェクトエクスプローラーで「データベース」→「新しいデータベース」。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/116843/51d5de84-1260-95ad-0292-9f946ce7ced5.png)

名前は何でもいいので、test としておきます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/116843/a5e9584e-de48-757d-8573-e640bb73a2c7.png)

#ODBC Driver for kintone のインストールとkintone 接続



##ODBC Driver for kintone のインストール
[https://www.cdata.com/jp/drivers/kintone/odbc/](https://www.cdata.com/jp/drivers/kintone/odbc/) からODBC Driver をダウンロードします。30日の無償版があります。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/116843/2309f6bc-b18a-af78-1ca3-a0340a9ed79f.png)


.exe ファイルをクリックして、インストーラーを起動し、インストールを行います。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/116843/403186f5-5309-00a9-09c2-e388077c872f.png)

##kintone Driver のDSN 設定
インストールを完了するとkintone Driver のDSN 構成画面が開きます。

URL、User、Password はkintone に接続するためのプロパティです。
Cache Connection、Cache Provider はキャッシュ先DB の指定のためのプロパティです。

| プロパティ      | 内容 |   
|:-----------------|:------------------|
| Url             | kintone のURL |
| User           | kintone のユーザー名 |
| Password             | kintone のパスワード |
| Cache Connection         | 以下参照  |
| Cache Provider | SQL Server ではSystem.Data.SqlClient |

Cache Connection はセミコロン区切りで、以下の情報を入れます。
```
Server=server name;Database=database name;User ID=your id;Password=password;
```

![image.png](https://qiita-image-store.s3.amazonaws.com/0/116843/ca57f3ac-6beb-6318-3df1-503979fffe14.png)

#Visual Studio からキャッシュを実行
Visual Studio のサーバーエクスプローラーから「データ接続」を右クリックして「接続の追加」を選択します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/116843/0cd8888c-df85-7ec8-fd78-91be1e3406a0.png)

データソース選択画面で「Microsoft ODBC データソース」を選択します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/116843/83d7cf25-c823-49e7-09bf-55b6028769f5.png)

接続の追加で、「CData Kintone Source Sys」を選択します。ログイン情報は不要です。
「テスト接続」をクリックして接続を確認します。接続できていれば、「OK」を押して接続を確立します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/116843/1777d71b-030f-2076-1f67-59eda87a66fa.png)

サーバーエクスプローラーには、「ODBC.Kintone.CData」というコネクションができています。
展開するとkintone のアプリがそれぞれテーブルとして並んでいます。kintone アプリ内のフィールドはテーブルのカラムになっています。このkintone オブジェクトには通常のSQL で操作することができます。

今回は、キャッシュなので、以下のキャッシュコマンドを作成し、実行します。

実行時にクエリテキストエラーが出ても気にせず続行してください。
```
CACHE SELECT * FROM "Target Table"
```

![image.png](https://qiita-image-store.s3.amazonaws.com/0/116843/a036d7f6-071f-0c5f-701e-7afd8c34b6f8.png)

#キャッシュ結果をSQL Server で確認
test データベースの下にkintone の選択したアプリが同期されています。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/116843/8a0774fe-cc20-451b-b9e0-530124403121.png)

（おわり）