PHP でMySQL からNetSuite のデータにアクセス

古川えりか
古川えりか
コンテンツスペシャリスト
PHP から標準MySQL ライブラリを介してNetSuite に接続。

CData SQL Gateway とODBC Driver for NetSuite を使用することで、ETL を実行したりデータをキャッシュしたりすることなく、MySQL クライアントからNetSuite にアクセスできます。以下のステップに従って、PHP の標準MySQL インターフェースであるmysqliPDO_MySQL を介してNetSuite のデータにリアルタイムで接続します。

CData ODBC ドライバとは?

CData ODBC ドライバは、以下のような特徴を持ったリアルタイムデータ連携ソリューションです。

  1. NetSuite をはじめとする、CRM、MA、会計ツールなど多様なカテゴリの270種類以上のSaaS / オンプレミスデータソースに対応
  2. 多様なアプリケーション、ツールにNetSuite のデータを連携
  3. ノーコードでの手軽な接続設定
  4. 標準 SQL での柔軟なデータ読み込み・書き込み

CData ODBC ドライバでは、1.データソースとしてNetSuite の接続を設定、2.MySQL 側でODBC Driver との接続を設定、という2つのステップだけでデータソースに接続できます。以下に具体的な設定手順を説明します。

CData ODBC ドライバのインストールとNetSuite への接続設定

まずは、本記事右側のサイドバーからNetSuite ODBC Driver の無償トライアルをダウンロード・インストールしてください。30日間無償で、製品版の全機能が使用できます。

必要な接続プロパティの値が未入力の場合には、データソース名(DSN)で入力します。組み込みのMicrosoft ODBC Data Source Administrator を使用し、DSN を構成できます。ドライバーのインストールの最後にアドミニストレーターが開きます。Microsoft ODBC データソースアドミニストレーターを使ってDSN を作成および設定する方法は、ヘルプドキュメントの「はじめに」を参照してください。

NetSuiteへの接続

NetSuite では、2種類のAPI でデータにアクセスできます。どちらのAPI を使用するかは、Schema 接続プロパティで以下のいずれかを選択して指定してください。

  • SuiteTalk は、NetSuite との通信に使用されるSOAP ベースの従来から提供されているサービスです。幅広いエンティティをサポートし、INSERT / UPDATE / DELETE の操作も対応しています。ただし、SuiteQL API と比べるとデータの取得速度が劣ります。また、サーバーサイドでのJOIN に対応していないため、これらの処理はCData 製品がクライアントサイドで実行します。
  • SuiteQL は、より新しいAPI です。JOIN、GROUP BY、集計、カラムフィルタリングをサーバーサイドで処理できるため、SuiteTalk よりもはるかに高速にデータを取得できます。ただし、NetSuite データへのアクセスは読み取り専用となります。

データの取得のみが目的でしたらSuiteQL をお勧めします。データの取得と変更の両方が必要な場合は、SuiteTalk をお選びください。

NetSuite への認証

CData 製品では、以下の認証方式がご利用いただけます。

  • トークンベース認証(TBA)はOAuth1.0に似た仕組みです。2020.2以降のSuiteTalk とSuiteQL の両方で利用できます。
  • OAuth 2.0 認証(OAuth 2.0 認可コードグラントフロー)は、SuiteQL でのみご利用いただけます。
  • OAuth JWT 認証は、OAuth2.0 クライアント認証フローの一つで、クライアント認証情報を含むJWT を使用してNetSuite データへのアクセスを要求します。

トークンベース認証(OAuth1.0)

トークンベース認証(TBA)は、基本的にOAuth 1.0 の仕組みです。この認証方式はSuiteTalk とSuiteQL の両方でサポートされています。管理者権限をお持ちの方がNetSuite UI 内でOAuthClientId、OAuthClientSecret、OAuthAccessToken、OAuthAccessTokenSecret を直接作成することで設定できます。 NetSuite UI でのトークン作成手順については、ヘルプドキュメントの「はじめに」セクションをご参照ください。

アクセストークンを作成したら、以下の接続プロパティを設定して接続してみましょう。

  • AuthScheme = Token
  • AccountId = 接続先のアカウント
  • OAuthClientId = アプリケーション作成時に表示されるコンシューマーキー
  • OAuthClientSecret = アプリケーション作成時に表示されるコンシューマーシークレット
  • OAuthAccessToken = アクセストークン作成時のトークンID
  • OAuthAccessTokenSecret = アクセストークン作成時のトークンシークレット

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

SQL Gateway を構成する

NetSuite のデータへの接続を、仮想MySQL データベースとして設定する方法については、「SQL Gateway Overview」を参照してください。クライアントからのMySQL リクエストをリッスンするMySQL リモートサービスを構成します。このサービスはSQL Gateway UI で設定できます。

Creating a MySQL Remoting Service in SQL Gateway (Salesforce is shown)

PHP から接続する

以下の例は、オブジェクト指向インターフェースを使用してクエリを接続および実行する方法を示します。 以下のパラメータを使用して接続オブジェクトを初期化し、仮想MySQL データベースに接続します。

  • Host:サービスが実行されているリモートホストの場所を指定します。この例では、サービスがローカルマシンで実行されているため、"localhost" をリモートホスト設定に使用します。
  • Username:SQL Gateway の「ユーザー」タブで認証したユーザーのユーザー名を指定します。
  • Password:認証されたユーザーアカウントのパスワードを指定します。
  • Database Name:データベース名としてシステムDSN を指定します。
  • Port:サービスが実行されているポートを指定します。この例では3306 を指定します。

mysqli

<?php
$mysqli = new mysqli("localhost", "user", "password", "CData NetSuite Sys","3306");
?>

PDO

<?php
$pdo = new PDO('mysql:host=localhost;dbname=CData NetSuite Sys;port=3306', 'user', 'password');
?>

PHP からクエリする

接続が確立されると、テーブルにアクセスできます。以下のステップでは、例を説明します。

  1. テーブル(SalesOrder)をクエリします。結果は、連想配列として$result オブジェクトに保存されます。
  2. 各行とカラムを順番に処理して、値を出力してPHP ページに表示することができます。
  3. 接続を閉じます。

mysqli

$result = $mysqli->query("SELECT Customer.FirstName AS CustomerName, SalesOrder.Total AS SalesOrderTotal FROM SalesOrder, Customer");
while($row = $result->fetch_assoc()) {
  foreach ($row as $k=>$v) {
    echo "$k : $v";
    echo "<br />";
  }
}
$mysqli->close();

PDO

$result = $pdo->query("SELECT Customer.FirstName AS CustomerName, SalesOrder.Total AS SalesOrderTotal FROM SalesOrder, Customer");
while($row = $result->fetch(PDO::FETCH_ASSOC)) {
  foreach ($row as $k=>$v) {
    echo "$k : $v";
    echo "<br />";
  }
}
$result = null;
$pdo = null;

おわりに

このようにCData ODBC ドライバと併用することで、270を超えるSaaS、NoSQL データをコーディングなしで扱うことができます。30日の無償評価版が利用できますので、ぜひ自社で使っているクラウドサービスやNoSQL と合わせて活用してみてください。

CData ODBC ドライバは日本のユーザー向けに、UI の日本語化、ドキュメントの日本語化、日本語でのテクニカルサポートを提供しています。

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

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

 ダウンロード

詳細:

NetSuite Icon NetSuite ODBC Driver お問い合わせ

NetSuite ODBC ドライバーは、ODBC 接続をサポートする任意のアプリケーションからリアルタイムなNetSuite データに直接接続できるパワフルなツールです。標準のODBC ドライバーインタフェースを使用して、データベースのようにNetSuite にアクセスし、潜在顧客、連絡先、営業案件、アカウントなどの読み、書き、更新を実行できます。