---
schema_version: "1"
id: 7425a9b100069e147fc375696ac2641fddbe9d589ea94b8d9993ce0503e796fc
title: CSV 形式
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/dataweave/2.3/dataweave-formats-csv.md
canonical_url: https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-formats-csv
source_site: docs.mulesoft.com
content_type: documentation
content_hash: 7a4aec1eed6766361049c6f5a26ebb2d83f6ac1ece67f3234e48d50ca8790e45
description: MuleSoft Documentation Site
release: "2.3"
latest: false
---
# CSV 形式

MIME タイプ: `application/csv`​

ID: `csv`​

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

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

- インデックス付き
- メモリ内
- ストリーミング

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

詳細は、​[「DataWeave リーダー」](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-formats#dw_readers_writers)​を参照してください。

## [](#例)例

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

- [例: CSV データを表す](#example1)​
- [例: CSV データをストリーミングする](#example2)

### [](#example1)例: CSV データを表す

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

#### [](#入力)入力

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

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

#### [](#ソース)ソース

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

```dataweave
%dw 2.0
output application/dw
---
payload
```

#### [](#出力)出力

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

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

### [](#example2)例: CSV データをストリーミングする

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

#### [](#入力-2)入力

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

ストリーミング例の 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-設定)XML 設定

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

```xml
<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`​ に表示されるものと同じ出力ペイロードを出力します。

#### [](#出力-2)出力

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

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

## [](#properties)Configuration のプロパティ

DataWeave では、CSV の次の設定プロパティがサポートされています。

### [](#reader-のプロパティ)Reader のプロパティ

CSV 形式では、入力データの読み込みの指示を提供するプロパティを使用できます。

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 16.6666%;">
<col style="width: 16.6666%;">
<col style="width: 16.6666%;">
<col style="width: 50.0002%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">パラメーター</th>
<th class="tableblock halign-left valign-top">型</th>
<th class="tableblock halign-left valign-top">デフォルト</th>
<th class="tableblock halign-left valign-top">説明</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>bodyStartLineNumber</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>Number</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>0</code></p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>本文が開始される行番号。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>escape</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>String</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>\</code></p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>項目値内の区切り文字または引用符などの無効な文字をエスケープするために使用される文字。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>header</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>Boolean</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>true</code></p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>CSV ヘッダーが存在するかどうを示します。
 有効な値は、​<code>true</code>​ または ​<code>false</code>​ です。</p>
</div>
<div class="ulist">
<ul>
<li>
<p><code>header=true</code>​ の場合、入力内の項目に名前 (​<code>payload.userName</code>​ など) を使用してアクセスできます。</p>
</li>
<li>
<p><code>header=false</code>​ の場合、インデックスを使用して項目にアクセスする必要があります。インデックスは、最初にエントリを参照し、次に項目を参照します (​<code>payload[107][2]</code>​ など)。</p>
</li>
</ul>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>headerLineNumber</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>Number</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>0</code></p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>CSV ヘッダーが配置されている行番号。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>ignoreEmptyLine</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>Boolean</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>true</code></p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>空の行を無視します。
有効な値は、​<code>true</code>​ または ​<code>false</code>​ です。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>quote</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>String</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>"</code></p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>引用符で使用する文字。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>separator</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>String</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>,</code></p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>項目間を分離する文字。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>streaming</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>Boolean</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>false</code></p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>CSV 入力をストリーミングするためのプロパティ。エントリを順次アクセスする場合のみ使用します。有効な値は、​<code>true</code>​ または ​<code>false</code>​ です。
<a href="#example2">ストリーミング例</a>​と​<a href="https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-formats#dw_readers_writers" class="xref page">「DataWeave リーダー」</a>​を参照してください。</p>
</div></div></td>
</tr>
</tbody>
</table>

### [](#writer_properties)Writer のプロパティ

CSV 形式では、出力データの書き込みの指示を提供するプロパティを使用できます。

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 16.6666%;">
<col style="width: 16.6666%;">
<col style="width: 16.6666%;">
<col style="width: 50.0002%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">パラメーター</th>
<th class="tableblock halign-left valign-top">型</th>
<th class="tableblock halign-left valign-top">デフォルト</th>
<th class="tableblock halign-left valign-top">説明</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>bodyStartLineNumber</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>Number</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>0</code></p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>本文が開始される行番号。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>bufferSize</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>Number</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>8192</code></p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>ライターバッファのサイズ。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>deferred</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>Boolean</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>false</code></p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>​<code>true</code>​ に設定すると、DataWeave は出力をデータストリームとして生成し、スクリプトの実行はそれがコンシュームされるまで延期されます。
  有効な値は、​<code>true</code>​ または ​<code>false</code>​ です。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>encoding</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>String</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>null</code></p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>使用するライターのエンコード (​<code>UTF-8</code>​ など)。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>escape</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>String</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>\</code></p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>項目値内の区切り文字または引用符などの無効な文字をエスケープするために使用される文字。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>header</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>Boolean</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>true</code></p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>CSV ヘッダーを書き込むかどうかを示します。有効な値は、​<code>true</code>​ または ​<code>false</code>​ です。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>headerLineNumber</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>Number</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>0</code></p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>ヘッダーが配置されている行番号を識別します。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>ignoreEmptyLine</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>Boolean</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>true</code></p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>空の行を無視します。
有効な値は、​<code>true</code>​ または ​<code>false</code>​ です。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>lineSeparator</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>String</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">新規回線</p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>CSV を作成するときに使用する行区切り文字 (​<code>\r\n</code>​ など)。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>quote</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>String</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>"</code></p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>引用符で使用する文字。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>quoteHeader</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>Boolean</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>false</code></p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>ヘッダー値を引用符で囲むかどうかを示します。
有効な値は、​<code>true</code>​ または ​<code>false</code>​ です。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>quoteValues</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>Boolean</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>false</code></p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>(値に特殊文字が含まれている場合でも) 各値を引用符で囲むかどうかを示します。有効な値は、​<code>true</code>​ または ​<code>false</code>​ です。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>separator</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>String</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>,</code></p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>項目間を分離する文字。</p>
</div></div></td>
</tr>
</tbody>
</table>

## [](#mime_types)サポートされる MIME タイプ

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

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 100%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">MIME タイプ</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>*/csv</code>​</p></td>
</tr>
</tbody>
</table>