WindGate TSV

この文書では、WindGateを使ってTSVフォーマットのローカルファイルをインポート/エクスポートするための拡張機能の使い方について説明します。

Deprecated

Asakusa Framework バージョン 0.10.0 以降、 WindGate TSV は非推奨機能となりました。 代わりに WindGate CSV や、 Direct I/O formatted text を利用してください。

Mavenアーティファクト

WindGateのTSVファイル連携モジュールはAsakusa FrameworkのMavenリポジトリにグループID com.asakusafw.sandbox を持つMavenアーティファクトとして登録されています。

WindGateのTSVファイル連携で使用するMavenアーティファクト
グループID アーティファクトID
com.asakusafw.sandbox asakusa-windgate-dmdl-ext

TSVファイル連携モジュールの利用方法

TSVファイル連携モジュールを使用する場合はアプリケーションプロジェクトの build.gradledependencies ブロック内に依存定義を追加します。

build.gradle
dependencies {
    compile group: 'com.asakusafw.sandbox', name: 'asakusa-windgate-dmdl-ext', version: asakusafw.core.version
}

モデルクラスの生成

DMDLに対するTSVファイル用拡張属性の追加

TSVファイル連携を行うために、DMDLに対してTSVファイルを扱うことを示す拡張属性を追加します。

各モデルのDMDLスクリプトに対して、モデル名の記述行の前行に拡張属性 @windgate.stream_format(type="tsv") を付与します。

以下にTSVファイルを扱う場合のDMDLスクリプトの例を示します。

"テーブルEX1"
...
@windgate.stream_format(type="tsv")
ex1 = {
    "SID"
    sid : LONG;
    "VALUE"
    value : INT;
    "STRING"
    string : TEXT;
};

Asakusa DSLの記述

WindGateのTSVファイル連携を使った場合のAsakusa DSLの記述については、CSVファイル連携を使った場合と同じです。

TSVファイルフォーマット仕様

WindGateのTSV連携機能で扱うTSVファイルのフォーマット仕様について説明します。

Warning

現時点では、本項のTSVファイルフォーマットは暫定仕様です。

TSVフォーマット概要

TSVファイルは、MySQLの SELECT ... INTO OUTFILE で、次の指定をした場合に生成されるファイルフォーマット [1] と同一です。

  • FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\'
  • LINES TERMINATED BY '\n' STARTING BY ''
[1]MySQL 5.1 のデフォルトフォーマットと同一です。

TSVフォーマット詳細

  • 各フィールドをDMDLスクリプトの順番に記述します。
  • フィールドの区切り文字にはタブ文字を使用します。
  • レコードの区切り文字は改行(LF)を使用します。
    • CR+LF は使用できません。
  • エスケープ文字には「\」を使用します。
    • エスケープ文字そのもの、改行(LF)、タブ文字をデータとして扱う場合は「\」を前に付加してエスケープします。
  • 引用文字は使用しません。
  • 最終レコードにも(LF)が必要です。
  • エンコーディングはUTF-8を使用します。
  • NULL値は「\N」で表します。
  • 空文字はフィールド区切り文字間に何も文字を入れないことで表現します。
  • 指数表記は使用しません。
  • Booleanは0/1で表します。
    • 0:false , 1:true
  • Date, Datetimeは以下の書式で表します。
    • Date: YYYY-MM-DD
    • Datetime: YYYY-MM-DD HH:MM:SS

TSVファイルのサンプル

DMDLスクリプトに対応するTSVファイルの例を以下に示します。

サンプル:DMDLスクリプト

"テーブルEX1"
...
@windgate.stream_format(type="tsv")
ex1 = {
    "SID"
    sid : LONG;
    "VALUE"
    value : INT;
    "STRING"
    string : TEXT;
};

サンプル:TSVファイル

Attention

以下サンプルのドキュメント上の区切り文字はスペースになっていますが、実際のファイルはタブ文字を使用してください。

1   111     hoge1
2   222     fuga2
3   333     bar3
4   111     hoge4
5   222     fuga5
6   333     bar6
7   111     hoge7
8   222     fuga8
9   444     bar9