MATLABからOracleへのアクセス方法
動作確認OSはWindows XP、オラクルのバージョンはOracle 10gである。
設定方法
Windows版のMATLABからOracleデータベースへアクセスするには、TNSNAMES.ORAの設定とODBCドライバーの設定が必要である。- TNSNAMES.ORAの設定
- ODBCドライバーの設定
- [コントロール パネル]−[管理ツール]−[データソース(ODBC)]を起動する。
- [User DSN]タブを選び、[Add...]ボタンをクリックする。
- 「Create New Data Source」ダイアログボックスで、「Oracle in Ora_Client_Home」をダブルクリックする。
- 「Oracle ODBC Driver Configuration」ダイアログボックスに、以下の情報を入力し、[OK]ボタンを押す。
- [Test Connection]ボタンをクリックし、接続テストを行う。「Connection successful」のメッセージが出れば成功。エラーが出た場合は、設定を見直す。
OracleクライアントのTNSNAMES.ORAファイルを編集し、Oracleサーバーの設定を追加する。
C:\…\NETWORK\ADMIN\TNSNAMES.ORA [ネット・サービス名]= (DESCRIPTION= (ADDRESS=(PROTOCOL=TCP)(HOST=[アドレス])(PORT=[ポート番号])) (CONNECT_DATA=(SERVICE_NAME=[サービス名])) )
Data Source Name : データソース名(任意の名前) Description : 説明 TNS Service Name : サービス名 User ID : ユーザー名
接続方法
プログラムからアクセスする方法
- database()で、データベースと接続する。
- exec()で、SQL文を実行する。SQL文の中に文字列がある場合は、'(クォーテーション)2つで囲むこと。
- fetch()で、データを取り出す。2番目の引数は取り出す行数で、指定しなければ全データが対象。
- データは cell 配列に読み込まれる。データを数値として取り出したい場合は、cell2mat()関数で単一行列に変換しなければならない。
詳しくは、マニュアル「Database Toolbox」の3章〜4章を参照のこと。
conn = database('[データソース名]','[ユーザー名]','[パスワード]'); curs = exec(conn, 'select * from usertable where okfield = ''OK'''); curs = fetch(curs, 10); D = curs.Data; % データ部分を切り出す D1 = D(:,[1]); % 最初のフィールドのデータを取り出す D1 = cell2mat(D1); % cell配列を数値の配列に変換する numrows = rows(curs); numcols = cols(curs); colnames = columnnames(curs); colsize = width(curs, 1); close(curs); close(conn);
Visual Query Builderツールを利用する方法
Visual Query Builderツールを使用して、Oracleデータベース上のデータを変数にインポートしたり、MATLAB上のデータをデータベースにインサートすることが可能である。ここでは、MATLABの変数にインポートする場合の手順のみを説明する。詳しくは、マニュアル「Database Toolbox」の第2章を参照のこと。
- 起動
- MATLABの左下の[スタート]ボタン−[Toolboxes]−[Database]−[Visual Query Builder]を選択し、起動する。
- Data operation
- [Select]を選択する。
- Data source
- いずれかを選択すると、UsernameとPasswordの入力ダイアログが表示されるので、入力し[OK]を押す。
- Tables
- いずれかを選択する。
- Fields
- いずれかを選択する。
- Advanced query options
- [All]か[Distinct]を選択する。必要なら、[Where...]、[Group by...]、[Having...]、[Order by...]のボタンを押して、条件を設定する。
- SQL statement
- SQLが表示される。編集も可能。
- MATLAB workspace variable
- データを出力する変数の名前を入力し、[Execute]ボタンを押す。