Embulk を使用して SharePoint Excel Services ののデータをデータベースにロードする方法

Jerod Johnson
Jerod Johnson
Senior Technology Evangelist
CData JDBC Driver とオープンソースのETL/ELT ツールであるEmbulk を使ってSharePoint Excel Services のデータをデータベースにロードする方法を解説します。

Embulk はオープンソースのバルクデータローダーです。CData JDBC Driver for SharePoint Excel Services と組み合わせることで、SharePoint Excel Services から任意の同期先にデータを簡単にロードできます。この記事では、CData JDBC Driver for SharePoint Excel Services をEmbulk で使用してSharePoint Excel Services のデータをMySQL データベースにロードする方法を解説します。

CData JDBC Driver は、最適化されたデータ処理機能を内蔵しており、リアルタイムのSharePoint Excel Services のデータに対して比類のないパフォーマンスを発揮します。SharePoint Excel Services に対して複雑なSQL クエリを発行すると、ドライバーはフィルタや集計などのサポートされているSQL 操作を直接SharePoint Excel Services にプッシュし、サポートされていない操作(SQL 関数やJOIN 操作など)は組み込みのSQL エンジンを使用してクライアント側で処理します。

SharePoint Excel Services への JDBC 接続を設定

Embulk でバルクロードジョブを作成する前に、JDBC Driver のJAR ファイルのインストール場所(通常はC:\Program Files\CData\CData JDBC Driver for SharePoint Excel Services\lib)を確認しておきます。

Embulk はJDBC 接続をサポートしているため、SharePoint Excel Services に簡単に接続してSQL クエリを実行できます。バルクロードジョブを作成する前に、SharePoint Excel Services への認証用のJDBC URL を作成します。

ワークブックへの接続

どちらのSharePoint エディションをお使いでも、File を Excel ワークブックに設定してください。このパスは以下のプロパティからの相対パスになります。

  • Library:デフォルトではShared Documents ライブラリが使用されます。このプロパティを使って、組織内の別のドキュメントライブラリを指定してみてください。例えば、OneDrive for Business に接続する場合は、このプロパティを"Documents" に設定します。
  • Folder:このプロパティを使って、ライブラリ内のサブフォルダへのパスを指定できます。パスはLibrary で指定されたライブラリ名に関連します。

テーブルとしてのスプレッドシートデータへの接続

CData 製品では、基底API で利用可能なオブジェクトに基づいて、使用可能なテーブルを検出していきます。

API では異なるAPI オブジェクトを表示します。スプレッドシートの構成とSharePoint のバージョンに基づいてAPI を選択しましょう。

  • OData: OData API を使用すると、Excel で[挿入]->[テーブル]をクリックして作成されたExcel テーブルオブジェクト(範囲やスプレッドシートではありません)から定義されたテーブルにアクセスできます。OData API に接続する際、ワークブックにテーブルオブジェクトが定義されていない場合は、CData 製品がテーブルを返さないことがあります。テーブルとしてスプレッドシートまたは範囲に接続するには、UseRESTAPI をtrue に設定してください。
  • REST: REST API を使用すると、Excel テーブルオブジェクト、範囲、およびスプレッドシートから定義されたテーブルへアクセスできます。これがデフォルトの API です。範囲およびスプレッドシートから多数の行をリクエストすることは REST API によって制限されており、CData 製品では返される行数をデフォルトで 100 に制限しています。また CData 製品では、デフォルトで1行目からカラム名を検出します。これを無効にするには、Header を設定してください。

DefineTables を追加設定すると、Excel の範囲の構文を使用して、範囲に基づいてテーブルを定義できます。大きすぎる範囲は、API によって制限されます。

SharePoint オンプレミスへの接続

URL をサーバー名もしくはIP アドレスに設定しましょう。さらに、SharePointVersion と認証値を設定します。

SharePoint OnPremises を認証するには、AuthScheme を認証タイプに設定し、必要に応じてUserPassword を設定してください。

Note:SharePoint On-Premises 2010 に接続する場合は、 UseRESTAPI をtrue に設定する必要があります。

    Windows(NTLM)

    最も一般的な認証タイプです。CData 製品では NTLM をデフォルトとして使用するよう事前設定されています。Windows のUserPassword を設定して接続してください。

    その他の認証方法については、ヘルプドキュメントの「はじめに」をご覧ください。

    組み込みの接続文字列デザイナー

    JDBC URL の作成には、SharePoint Excel Services JDBC Driver に組み込まれている接続文字列デザイナーを使用できます。JAR ファイルをダブルクリックするか、コマンドラインからJAR ファイルを実行します。

    java -jar cdata.jdbc.excelservices.jar
    

    接続プロパティを入力し、接続文字列をクリップボードにコピーします。

    以下は、SharePoint Excel Services への一般的なJDBC 接続文字列です。

    jdbc:excelservices:URL=https://myorg.sharepoint.com;User=admin@myorg.onmicrosoft.com;Password=password;File=Book1.xlsx;
    

    Embulk で SharePoint Excel Services ののデータをロード

    CData JDBC Driver をインストールしてJDBC 接続文字列を作成したら、必要なEmbulk プラグインをインストールします。

    Embulk の入力・出力プラグインをインストール

    1. Embulk にJDBC 入力プラグインをインストールします。
      https://github.com/embulk/embulk-input-jdbc/tree/master/embulk-input-jdbc
    2. embulk gem install embulk-input-jdbc
      
    3. この記事では、同期先データベースとしてMySQL を使用します。出力プラグインを使用して、SQL Server、PostgreSQL、またはGoogle BigQuery を同期先として選択することもできます。
      https://github.com/embulk/embulk-output-jdbc/tree/master/embulk-output-mysql
      embulk gem install embulk-output-mysql
      

    入力プラグインと出力プラグインをインストールしたら、Embulk を使用してSharePoint Excel Services のデータをMySQL にロードする準備が整いました。

    SharePoint Excel Services ののデータをロードするジョブを作成

    まず、Embulk で設定ファイルを作成します。ファイル名はexcelservices-mysql.yml のようにします。

    1. 入力プラグインのオプションには、CData JDBC Driver for SharePoint Excel Services、ドライバーJAR ファイルへのパス、ドライバークラス(例:cdata.jdbc.excelservices.ExcelServicesDriver)、および上記のJDBC URL を指定します。
    2. 出力プラグインのオプションには、MySQL データベースの値と認証情報を指定します。

    設定ファイルのサンプル(excelservices-mysql.yml)

    in:
    	type: jdbc
    	driver_path: C:\Program Files\CData[product_name] 20xx\lib\cdata.jdbc.excelservices.jar
    	driver_class: cdata.jdbc.excelservices.ExcelServicesDriver
    	url: jdbc:excelservices:URL=https://myorg.sharepoint.com;User=admin@myorg.onmicrosoft.com;Password=password;File=Book1.xlsx;
    	table: "Account"
    out:
    	type: mysql
    	host: localhost
    	database: DatabaseName
    	user: UserId
    	password: UserPassword
    	table: "Account"
    	mode: insert
    

    ファイルを作成したら、Embulk ジョブを実行します。

    embulk run excelservices-mysql.yml
    

    Embulk ジョブを実行すると、MySQL テーブルにSharePoint Excel Services のデータが格納されます。

フィルタリングした SharePoint Excel Services ののデータをロード

テーブルから直接データをロードするだけでなく、カスタムSQL クエリを使用してロードするデータをより詳細に制御できます。また、クエリフィールドのSQL WHERE 句で最終更新カラムを設定することで、増分ロードを実行することもできます。

in:
	type: jdbc
	driver_path: C:\Program Files\CData[product_name] 20xx\lib\cdata.jdbc.excelservices.jar
	driver_class: cdata.jdbc.excelservices.ExcelServicesDriver
	url: jdbc:excelservices:URL=https://myorg.sharepoint.com;User=admin@myorg.onmicrosoft.com;Password=password;File=Book1.xlsx;
	query: "SELECT Name, AnnualRevenue FROM Account WHERE [RecordId] = 1"
out:
	type: mysql
	host: localhost
	database: DatabaseName
	user: UserId
	password: UserPassword
	table: "Account"
	mode: insert

詳細情報と無料トライアル

CData JDBC Driver for SharePoint Excel Services をコネクタとして使用することで、Embulk のデータロードジョブにSharePoint Excel Services のデータを統合できます。また、200 を超えるエンタープライズデータソース向けドライバーにより、あらゆるエンタープライズSaaS、ビッグデータ、NoSQL ソースも統合できます。30日間の無料トライアルをダウンロードして、今すぐお試しください。

はじめる準備はできましたか?

SharePoint Excel Services Driver の無料トライアルをダウンロードしてお試しください:

 ダウンロード

詳細:

SharePoint Excel Services Icon SharePoint Excel Services JDBC Driver お問い合わせ

SharePoint サーバーでホストされているリアルタイムなExcel スプレッドシートコンテンツを組み込んだパワフルなJava アプリケーションを短時間・低コストで作成して配布できます。