CSV 形式

MIME タイプ: application/csv

ID: csv

CSV データ形式は、各オブジェクトが行を表すオブジェクトの DataWeave 配列として表されます。すべての単純な値は、文字列として表されます。

CSV 入力の DataWeave リーダーでは、次の解析戦略がサポートされています。

  • インデックス付き

  • メモリ内

  • ストリーミング

デフォルトでは、CSV リーダーは、ファイルが 1.5MB 以下の場合、ファイル全体からの入力データをメモリ内に保存します。ファイルが 1.5 MB よりも大きい場合、データはディスクに書き込まれます。非常に大きなファイルの場合は、ストリーミングプロパティを true に設定することで、リーダーのパフォーマンスを向上できます。

詳細は、​「DataWeave リーダー」​を参照してください。

次の例は、CSV 形式の使用方法を示しています。

例: CSV データを表す

次の例は、DataWeave で CSV データを表す方法を示しています。

入力

次のサンプルデータは、DataWeave ソースの入力として機能します。

name,lastname,age,gender
Mariano,de Achaval,37,male
Paula,de Estrada,37,female

ソース

この DataWeave スクリプトは、CSV 入力ペイロードを DataWeave (dw) 形式と MIME タイプに変換します。

%dw 2.0
output application/dw
---
payload

出力

この DataWeave スクリプトは、次の出力を生成します。

[
  {
    name: "Mariano",
    lastname: "de Achaval",
    age: "37",
    gender: "male"
  },
  {
    name: "Paula",
    lastname: "de Estrada",
    age: "37",
    gender: "female"
  }
]

例: CSV データをストリーミングする

デフォルトでは、CSV リーダーは、ファイルが 1.5MB 以下の場合、ファイル全体からの入力データをメモリ内に保存します。ファイルが 1.5 MB よりも大きい場合、データはディスクに書き込まれます。非常に大きなファイルの場合は、​streaming​ プロパティを ​true​ に設定することで、リーダーのパフォーマンスを向上できます。このプロパティの使用方法を示すため、次の例では、CSV ファイルをストリーミングして JSON に変換します。

入力

CSV 入力の構造は次のようになります。通常、ストリーミングされるファイルはこれよりもはるかに長くなります。

ストリーミング例の CSV ファイル入力 (切り捨てられています):
street,city,zip,state,beds,baths,sale_date
3526 HIGH ST,SACRAMENTO,95838,CA,2,1,Wed May 21 00:00:00 EDT 2018
51 OMAHA CT,SACRAMENTO,95823,CA,3,1,Wed May 21 00:00:00 EDT 2018
2796 BRANCH ST,SACRAMENTO,95815,CA,2,1,Wed May 21 00:00:00 EDT 2018
2805 JANETTE WAY,SACRAMENTO,95815,CA,2,1,Wed May 21 00:00:00 EDT 2018
6001 MCMAHON DR,SACRAMENTO,95824,CA,2,1,,Wed May 21 00:00:00 EDT 2018
5828 PEPPERMILL CT,SACRAMENTO,95841,CA,3,1,Wed May 21 00:00:00 EDT 2018

XML 設定

streaming​ プロパティの使用方法を示すため、次の Mule フローでは、CSV ファイルをストリーミングして JSON に変換します。

<flow name="dw-streamingFlow" >
  <scheduler doc:name="Scheduler" >
    <scheduling-strategy >
      <fixed-frequency frequency="1" timeUnit="MINUTES"/>
    </scheduling-strategy>
  </scheduler>
  <file:read
     path="${app.home}/input.csv"
     config-ref="File_Config"
     outputMimeType="application/csv; streaming=true; header=true"/>
  <ee:transform doc:name="Transform Message" >
    <ee:message >
      <ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
payload map ((row) -> {
zipcode: row.zip
})]]></ee:set-payload>
    </ee:message>
  </ee:transform>
  <file:write doc:name="Write"
    config-ref="File_Config1"
    path="/path/to/output/file/output.json"/>
  <logger level="INFO" doc:name="Logger" message="#[payload]"/>
</flow>
  • この例では、​outputMimeType="application/csv; streaming=true"​ を設定して、CSV 入力をストリーミングするように Read 操作 (​<file:read/>​) を設定します。入力 CSV ファイルは、​${app.home}​ の場所であるプロジェクトディレクトリ ​src/main/resources​ にあります。

  • Transform Message​ コンポーネントの DataWeave スクリプトは、​map​ 関数を使用して CSV ペイロードの各行を反復処理し、​zip​ 列の各項目の値を選択します。

  • Write 操作によって、変換の結果が含まれるファイル (​output.json​) が返されます。

  • Logger は、​output.json​ に表示されるものと同じ出力ペイロードを出力します。

出力

CSV ストリーミングの例では、次の出力が生成されます。

[
  {
    "zipcode": "95838"
  },
  {
    "zipcode": "95823"
  },
  {
    "zipcode": "95815"
  },
  {
    "zipcode": "95815"
  },
  {
    "zipcode": "95824"
  },
  {
    "zipcode": "95841"
  }
]

Configuration のプロパティ

DataWeave では、この形式の以下の設定プロパティがサポートされています。

Reader のプロパティ

この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。

パラメーター デフォルト 説明

bodyStartLineNumber

Number

0

本文が開始される行番号。

escape

String

\

区切り文字や引用符などの特殊文字をエスケープするために使用される文字。

header

Boolean

true

CSV ヘッダーが存在するかどうかを示します。

  • header=true​ の場合、入力内の項目に名前 (​payload.userName​ など) を使用してアクセスできます。

  • header=false​ の場合、インデックスを使用して項目にアクセスする必要があります。インデックスは、最初にエントリを参照し、次に項目を参照します (​payload[107][2]​ など)。

有効な値は、​true​ または ​false​ です。

headerLineNumber

Number

0

CSV ヘッダーが配置されている行番号。

ignoreEmptyLine

Boolean

true

空の行を無視するかどうかを示します。

有効な値は、​true​ または ​false​ です。

quote

String

"

引用符で使用する文字。

separator

String

,

項目間を分離する文字。

streaming

Boolean

false

true​ に設定すると、入力をストリーミングします。エントリを順次アクセスする場合のみ使用します。入力は最上位の配列である必要があります。​ストリーミング例​と 「DataWeave リーダー」​を参照してください。

有効な値は、​true​ または ​false​ です。

Writer のプロパティ

この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。

パラメーター デフォルト 説明

bodyStartLineNumber

Number

0

本文が開始される行番号。

bufferSize

Number

8192

バッファライターのサイズ。値は 8 よりも大きい必要があります。

deferred

Boolean

false

true​ に設定すると、出力をデータストリームとして生成し、スクリプトの実行は生成されたコンテンツがコンシュームされるまで延期されます。

有効な値は、​true​ または ​false​ です。

encoding

String

null

出力で使用するエンコード (UTF-8 など)。

escape

String

\

区切り文字や引用符などの特殊文字をエスケープするために使用される文字。

header

Boolean

true

CSV ヘッダーが存在するかどうかを示します。

  • header=true​ の場合、入力内の項目に名前 (​payload.userName​ など) を使用してアクセスできます。

  • header=false​ の場合、インデックスを使用して項目にアクセスする必要があります。インデックスは、最初にエントリを参照し、次に項目を参照します (​payload[107][2]​ など)。

有効な値は、​true​ または ​false​ です。

headerLineNumber

Number

0

CSV ヘッダーが配置されている行番号。

ignoreEmptyLine

Boolean

true

空の行を無視するかどうかを示します。

有効な値は、​true​ または ​false​ です。

lineSeparator

String

New Line (改行)

CSV を作成するときに使用する行区切り文字 (​「\r\n」​ など)。デフォルトでは、DataWeave ではシステムの行区切り文字を使用します。

quote

String

"

引用符で使用する文字。

quoteHeader

Boolean

false

true​ に設定した場合は、ヘッダー値を引用符で囲みます。

有効な値は、​true​ または ​false​ です。

quoteValues

Boolean

false

true​ に設定した場合は、特殊文字のある値を含めて、すべての値を引用符で囲みます。

有効な値は、​true​ または ​false​ です。

separator

String

,

項目間を分離する文字。

サポートされる MIME タイプ

この形式では、次の MIME タイプがサポートされます。

MIME タイプ

*/csv