自己紹介

 
守屋 聡

三重県出身。海星中・高等学校に進学。名古屋大学情報文化学部にてコンピュータに触れた後、外資系にあこがれてサン・マイクロシステムズに入社。入社後しばらくしてLiberty Allianceの実証実験に関わり、ソフトウェアに興味を持つ。製品主管部署に異動し、以後、現在までアイデンティティ管理製品のプリセールス・エンジニアを担当。


Sakila (MySQL イルカ) 写真集



MySQLからCSVファイルへの変換作業...は必要なかった

11.14.2008 | 2 投稿されたコメント

先日も書いたように、今週は世界中の SE を集めた技術トレーニング CEC に来ています。毎日、セッションの内容が変わりますが、今日は MySQL でした。これまで Sun のイベントで RDBMS に触れることはそれほど多くなかったんですが、今年は MySQL がメインのセッションの1つになっています。Sun の社員だから、というわけではなく、RDBMS の中で一番好きなデータベースだっただけに、MySQL を仕事として学べるのはうれしい限りです。

MySQLはデータベースの種類を選べる「ストレージエンジン」という機能がある、ということは比較的有名ですが、その中に CSV というエンジンがあることをご存知でしょうか?この CSV というストレージエンジンを使うと、データベースの実体が CSV ファイルで作成されます。つまり CSV ファイルに SQL のインタフェースが付いたようなカンジです。CSV ストレージエンジンはインデックスが使えない、といった一面も持っていますが、データベースをCSVに手軽に吐かせたい方にはもってこいのエンジンです。

この特長を利用してIdentity Managerと組み合わせると、Identity Managerが管理するユーザ情報を簡単に・高速にCSV形式で出力することができます。

やり方は非常に簡単です。

まず、利用している MySQL で CSV ストレージエンジンが利用できるようになっているかどうか確認して下さい。show engines と実行してみて下さい。

mysql> show engines \G
*************************** 1. row ***************************
      Engine: MEMORY
     Support: YES
     Comment: Hash based, stored in memory, useful for temporary tables
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 2. row ***************************
      Engine: InnoDB
     Support: YES
     Comment: Supports transactions, row-level locking, and foreign keys
Transactions: YES
          XA: YES
  Savepoints: YES
*************************** 3. row ***************************
      Engine: MyISAM
     Support: DEFAULT
     Comment: Default engine as of MySQL 3.23 with great performance
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 4. row ***************************
      Engine: BLACKHOLE
     Support: YES
     Comment: /dev/null storage engine (anything you write to it disappears)
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 5. row ***************************
      Engine: MRG_MYISAM
     Support: YES
     Comment: Collection of identical MyISAM tables
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 6. row ***************************
      Engine: CSV
     Support: YES
     Comment: CSV storage engine
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 7. row ***************************
      Engine: ARCHIVE
     Support: YES
     Comment: Archive storage engine
Transactions: NO
          XA: NO
  Savepoints: NO
7 rows in set (0.00 sec)

私が利用している Windows 版 MySQL 5.1 ではデフォルトで利用できるようになっています。お試しになりたい方は是非ダウンロードしてみて下さい。

そして、MySQLを使って CSV テーブルを作成しておきます。私の環境では以下のようになっています。

mysql> show create table db4csv \G
*************************** 1. row ***************************
       Table: db4csv
Create Table: CREATE TABLE `db4csv` (
  `LAST` varchar(20) NOT NULL,
  `EMAIL` varchar(255) NOT NULL,
  `ID` varchar(20) NOT NULL,
  `FIRST` varchar(20) NOT NULL
) ENGINE=CSV DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

次に、Identity ManagerでMySQLデータベーステーブルとしてリソースの登録を行います。


特別な設定は必要ありません。ウィザードに従って必要なパラメータを埋めて行きます。

そしてユーザを作成し、先ほど作成したリソースを割り当てます。




ここでは、ユーザに MySQL CSV Table と名付けたリソースを割り当てています。



すると、CSV形式でユーザ情報が生成されます。

"moriya","satoshi.moriya@acme.com","12345","satoshi"

これだけです!

これまでは Identity Manager から CSV ファイルを出力する際に Shell Script リソースアダプタを使って Unix のシェルスクリプトを介して生成する事もありましたが、こちらの方が手軽に、しかも高速に実現できそうです。
« タダで使えるSPML Provision... | メイン | 第3の ERM ベンダ Eurekify... »

コメント
  • HTML文法 不許可