はじめに
データベースをフラットファイルに出力際の形式の一つである「IXF」という拡張子に関して、簡易的な説明文書がなかったので今回は記事にまとめてみました。
IXFとは?
そもそも、IXFとはIntegrated Exchange Formatの略で、
「統合交換フォーマット」 と訳されています。
こちらが登場するのは、Db2にてデータを移動する際に作成する一時ファイルとしてとなります。
Db2では表をエクスポートする際の形式としてASC、DEL、WSF、IXF の4つがデータの拡張子候補として用意されており、ASCとDELはテキストファイルとしてデータベースを表現します。例えばDELファイルをメモ帳などで開けば、CSVファイルのようにカンマ区切りでデータが確認できます。
WSFは、ワークシート形式のことでイメージとしては表計算ソフトで開くためのものです。Lotusなどで開くことを想定していますが、
WSF ファイル・フォーマットのサポートは非推奨で今後のリリースでは除去される可能性があります。
WSF ファイルのサポートが除去される前にサポートされているファイル・フォーマットを使用し始めることをお勧めします。
という記載がありますので、あまり流行ってはいない模様。
そしてIXFは以下で分かるようにバイナリー・フォーマットです。
$ db2 "export to /tmp/testdb.ixf of ixf select * from sales" SQL3104N The Export utility is beginning to export data to file "/tmp/testdb.ixf"... $ file /tmp/testdb.ixf /tmp/testdb.ixf: data
ただ、他の拡張子との違いとしてはデータだけでなくデータ定義言語といった付加情報も含めることができます。
つまり、データ移行した先で表を再構成しないといけない時には、IXF 形式でエクスポートされたファイルを使うと便利ということになります。ただし大きなLOBデータが入ったファイルでは表の作成はできない等の制約もありますので利用の前に確認は必要です。
小難しい記事では「IXFアーキテクチャーは、リレーショナル・データベース構造とデータの変換を可能にするように設計されている」等書かれていますが、要はただのテキストデータじゃなくてそのデータに関するSQLも情報として合わせて保持したバイナリーデータである、と認識していれば基礎としては十分だと思います。
以上、ご参考まで。