============ WindGate TSV ============ この文書では、WindGateを使ってTSVフォーマットのローカルファイルをインポート/エクスポートするための拡張機能の使い方について説明します。 .. deprecated:: Asakusa Framework バージョン 0.10.0 以降、 WindGate TSV は非推奨機能となりました。 代わりに WindGate CSV や、 :doc:`../directio/formatted-text` を利用してください。 Mavenアーティファクト ===================== WindGateのTSVファイル連携モジュールはAsakusa FrameworkのMavenリポジトリにグループID ``com.asakusafw.sandbox`` を持つMavenアーティファクトとして登録されています。 .. list-table:: WindGateのTSVファイル連携で使用するMavenアーティファクト :widths: 5 5 :header-rows: 1 * - グループID - アーティファクトID * - ``com.asakusafw.sandbox`` - ``asakusa-windgate-dmdl-ext`` TSVファイル連携モジュールの利用方法 =================================== TSVファイル連携モジュールを使用する場合はアプリケーションプロジェクトの :file:`build.gradle` の ``dependencies`` ブロック内に依存定義を追加します。 .. code-block:: none :caption: build.gradle :name: build.gradle-windgate-tsv-1 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スクリプトの例を示します。 .. code-block:: 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`` で、次の指定をした場合に生成されるファイルフォーマット [#]_ と同一です。 * ``FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\'`` * ``LINES TERMINATED BY '\n' STARTING BY ''`` .. [#] 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スクリプト ~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: dmdl "テーブルEX1" ... @windgate.stream_format(type="tsv") ex1 = { "SID" sid : LONG; "VALUE" value : INT; "STRING" string : TEXT; }; サンプル:TSVファイル ~~~~~~~~~~~~~~~~~~~~ .. attention:: 以下サンプルのドキュメント上の区切り文字はスペースになっていますが、実際のファイルはタブ文字を使用してください。 .. code-block:: none 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