---
schema_version: "1"
id: 520e588ba8143cb60412f6ddf7d37208c03c1c7f6749d504fb681c920be70f5b
title: フラットファイルの読み取りと書き込み
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/dataweave/2.7/dataweave-cookbook-flat-file-read-and-write.md
canonical_url: https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-flat-file-read-and-write
source_site: docs.mulesoft.com
content_type: documentation
content_hash: 80764954e45dfddf1a43be96184454bf77a9e8fd91958acd5ddcf24bc3d8eb23
description: MuleSoft Documentation Site
release: "2.7"
latest: false
---
# フラットファイルの読み取りと書き込み

次の例では、フラットファイルのコンテンツを読み取る方法に加えて、指定されたスキーマに従ってフラットファイルを書き込む方法も示しています。それぞれの例は、DataWeave を使用してフラットファイルの読み取りと書き込みを行う Mule アプリケーションで構成されています。

フラットファイルを操作するときは、フラットファイルのコンテンツの読み取りと書き込みに使用するフラットファイルスキーマを設定します。フラットファイルスキーマによってフラットファイルの構造が定義され、これによって Mule はこの形式で書き込みと読み取りを行うことができます。

これらの例のアプリケーションは、​[「フラットファイルスキーマ」](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-flat-file-schemas#full_schema_ex)​で指定されているサンプルのフラットファイルデータとフラットファイルスキーマの例を操作するように設定されています。

## [](#フラットファイルの読み取りの例)フラットファイルの読み取りの例

次の例のアプリケーションは、以下で構成されています。

1. フローをトリガーする Scheduler コンポーネント
2. 指定されたパスからフラットファイルを読み取る File Read 操作
3. フラットファイルから読み取られたコンテンツを JSON 形式に変換する Transform Message コンポーネント
4. 現在のペイロードを出力する Logger コンポーネント

![フラットファイルを読み取って JSON に変換するプロセスを示すフロー](/mulesoft/current/ja-jp/dataweave/2.7/_images/mruntime-read-flat-file.png)

アプリケーション XML ファイル

```xml
<mule xmlns:file="http://www.mulesoft.org/schema/mule/file"
  xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core"
  xmlns="http://www.mulesoft.org/schema/mule/core"
  xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd
http://www.mulesoft.org/schema/mule/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd">
  <file:config name="File_Config" doc:name="File Config" >
    <file:connection workingDir="${fileWorkingDir}" />
  </file:config>
  <configuration-properties doc:name="Configuration properties" file="flatfileconfig.properties" />
  <flow name="ReadFlatfileFlow" >
    <scheduler doc:name="Scheduler">
      <scheduling-strategy>
        <fixed-frequency frequency="10000" />
      </scheduling-strategy>
    </scheduler>
    <file:read doc:name="Read flat file" config-ref="File_Config"
    path="${fileReadPath}"
    outputMimeType='application/flatfile; schemapath=${schemaPath}'/> (1)
    <ee:transform doc:name="Transform to JSON"  >
      <ee:message >
        <ee:set-payload ><![CDATA[%dw 2.0
        output application/json
        ---
        payload]]>
        </ee:set-payload>
      </ee:message>
    </ee:transform>
    <logger level="INFO" doc:name="Logger" message='#["\n"]Reading flat file from: ${mule.home}/apps/${app.name}/${fileReadPath}#["\n"]#[payload]' />
  </flow>
</mule>
```

<table>
<tbody><tr>
<td><i class="conum" data-value="1"></i><b>1</b></td>
<td>File Read 操作では次の属性が設定されます。
<div class="ulist">
<ul>
<li>
<p><code>path</code>​: 読み取るフラットファイルのパス</p>
</li>
<li>
<p><code>outputMimeType</code>​: コンテンツの出力 MIME タイプで、この場合は ​<code>application/flatfile</code></p>
</li>
<li>
<p><code>schemapath</code>​: フラットファイルスキーマ (​<code>.ffd</code>​ ファイル) へのパスを指定するリーダープロパティ</p>
</li>
</ul>
</div></td>
</tr>
</tbody></table>

このアプリケーション例の実行後に、次の出力が生成されます。

```json
{
  "Batch": [
    {
      "TDR": [
        {
          "Record Type": "BAT",
          "Sequence Number": 2,
          "Amount": 32876,
          "Account Number": "0123456789",
          "Batch Function": "D",
          "Type": "CR"
        },
        {
          "Record Type": "BAT",
          "Sequence Number": 3,
          "Amount": 87326,
          "Account Number": "0123456788",
          "Batch Function": "D",
          "Type": "CR"
        }
      ],
      "BCF": {
        "Record Type": "BAT",
        "Sequence Number": 4,
        "Batch Transaction Count": 2,
        "Batch Transaction Amount": 120202,
        "Unique Batch Identifier": "A000000001",
        "Batch Function": "T",
        "Type": "CR"
      },
      "BCH": {
        "Record Type": "BAT",
        "Company Name": "ACME RESEARCH",
        "Sequence Number": 1,
        "Unique Batch Identifier": "A000000001",
        "Batch Function": "H"
      }
    },
    {
      "TDR": [
        {
          "Record Type": "BAT",
          "Sequence Number": 6,
          "Amount": 3582,
          "Account Number": "1234567890",
          "Batch Function": "D",
          "Type": "DB"
        },
        {
          "Record Type": "BAT",
          "Sequence Number": 7,
          "Amount": 256,
          "Account Number": "1234567891",
          "Batch Function": "D",
          "Type": "CR"
        }
      ],
      "BCF": {
        "Record Type": "BAT",
        "Sequence Number": 8,
        "Batch Transaction Count": 2,
        "Batch Transaction Amount": 3326,
        "Unique Batch Identifier": "A000000002",
        "Batch Function": "T",
        "Type": "DB"
      },
      "BCH": {
        "Record Type": "BAT",
        "Company Name": "AJAX EXPLOSIVES",
        "Sequence Number": 5,
        "Unique Batch Identifier": "A000000002",
        "Batch Function": "H"
      }
    }
  ],
  "RQF": {
    "Record Type": "RQF",
    "File Batch Count": 2,
    "File Transaction Count": 8,
    "File Transaction Amount": 116876,
    "Unique File Identifier": "A000000001",
    "Type": "CR"
  },
  "RQH": {
    "Record Type": "RQH",
    "File Creation Time": "10:10:00",
    "File Creation Date": "2018-09-01",
    "Currency": "USD",
    "Unique File Identifier": "A000000001"
  }
}
```

## [](#フラットファイルの書き込みの例)フラットファイルの書き込みの例

次の例のアプリケーションは、以下で構成されています。

1. フローをトリガーする Scheduler コンポーネント
2. 前の例からの JSON 出力が含まれるファイルを読み取る File Read 操作
3. JSON ペイロードを指定されたフラットファイル形式に変換する Transform Message コンポーネント
4. 現在のペイロードを出力する Logger コンポーネント
5. ペイロードを指定された対象パスのフラットファイルに出力する File Write 操作

![フラットファイルを書き込むプロセスを示すフロー](/mulesoft/current/ja-jp/dataweave/2.7/_images/mruntime-write-flat-file.png)

アプリケーション XML ファイル

```xml
<mule xmlns:file="http://www.mulesoft.org/schema/mule/file"
  xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core"
  xmlns="http://www.mulesoft.org/schema/mule/core"
  xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd
http://www.mulesoft.org/schema/mule/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd">
  <file:config name="File_Config" doc:name="File Config" >
    <file:connection workingDir="${fileWorkingDir}" />
  </file:config>
  <configuration-properties doc:name="Configuration properties" file="flatfileconfig.properties" />
  <flow name="WriteFlatFile" >
    <scheduler doc:name="Scheduler" >
    	<scheduling-strategy >
        <fixed-frequency frequency="10000" />
    	</scheduling-strategy>
    </scheduler>
    <file:read doc:name="Read JSON file" config-ref="File_Config" path="${jsonFileReadPath}"/>
    <ee:transform doc:name="Transform to flat file"> (1)
    	<ee:message>
        <ee:set-payload><![CDATA[%dw 2.0
output application/flatfile schemaPath = "flatfileschema.ffd"
%dw 2.0
---
{
	RQH: {
		"Record Type": payload.RQH."Record Type",
		"File Creation Date": payload.RQH."File Creation Date" as Date {format: "yyyy-MM-dd"},
		"File Creation Time": payload.RQH."File Creation Time" as Time,
		"Unique File Identifier": payload.RQH."Unique File Identifier",
		Currency: payload.RQH.Currency
	},
	Batch: payload.Batch map ( batch , indexOfBatch ) -> {
		BCH: {
			"Record Type": batch.BCH."Record Type",
			"Sequence Number": batch.BCH."Sequence Number",
			"Batch Function": batch.BCH."Batch Function",
			"Company Name": batch.BCH."Company Name",
			"Unique Batch Identifier": batch.BCH."Unique Batch Identifier"},
		TDR: batch.TDR map (tdr, indexOfTdr) ->
			{
			"Record Type": tdr.TDR."Record Type",
			"Sequence Number": tdr.TDR."Sequence Number",
			"Batch Function": tdr.TDR."Batch Function",
			"Account Number": tdr.TDR."Account Number",
			"Amount": tdr.TDR.Amount,
			"Type": tdr.TDR.'Type'
			},
		BCF: {
			"Record Type": batch.BCF."Record Type",
			"Sequence Number": batch.BCF."Sequence Number",
			"Batch Function": batch.BCF."Batch Function",
			"Batch Transaction Amount": batch.BCF."Batch Transaction Amount",
			"Type": batch.BCF.'Type',
			"Batch Transaction Count": batch.BCF."Batch Transaction Count",
			"Unique Batch Identifier": batch.BCF."Unique Batch Identifier"}
		},
	RQF: {
		"Record Type": payload.RQF."Record Type",
		"File Batch Count": payload.RQF."File Batch Count",
		"File Transaction Count": payload.RQF."File Transaction Count",
		"File Transaction Amount": payload.RQF."File Transaction Amount",
		Type: payload.RQF.Type,
		"Unique File Identifier": payload.RQF."Unique File Identifier"
	}
}
]]>
      </ee:set-payload>
    	</ee:message>
    </ee:transform>
    <logger level="INFO" doc:name="Logger" message='#["\n"]Writing flat file to: ${mule.home}/apps/${app.name}/${fileWritePath}#["\n"]#[payload]'/>
    <file:write doc:name="Write flat file" config-ref="File_Config" path="${fileWritePath}" /> (2)
	</flow>
</mule>
```

<table>
<tbody><tr>
<td><i class="conum" data-value="1"></i><b>1</b></td>
<td>Transform コンポーネントでは、スクリプトヘッダーで次のライタープロパティが指定されます。
<div class="ulist">
<ul>
<li>
<p><code>output</code>​: 変換の出力 MIME タイプで、この場合は ​<code>application/flatfile</code></p>
</li>
<li>
<p><code>schemapath</code>​: フラットファイルスキーマ (​<code>.ffd</code>​ ファイル) へのパスを指定するライタープロパティ</p>
</li>
</ul>
</div></td>
</tr>
<tr>
<td><i class="conum" data-value="2"></i><b>2</b></td>
<td>File Write 操作では ​<code>path</code>​ プロパティが指定され、フラットファイルをどこに書き込むかが定義されます。</td>
</tr>
</tbody></table>

このアプリケーション例の実行後に、次の出力が生成されます。

RQH201809011010A000000001USD
BAT000001HACME RESEARCH                 A000000001
BAT000000D          0000000000
BAT000000D          0000000000
BAT000004T0000120202CR000002A000000001
BAT000005HAJAX EXPLOSIVES               A000000002
BAT000000D          0000000000
BAT000000D          0000000000
BAT000008T0000003326DB000002A000000002
RQF0002000008000000116876CRA000000001

## [](#例をローカルでテストする)例をローカルでテストする

例をローカルでテストするには、次の手順に従って Mule アプリケーション例を作成して設定します。

1. Anypoint Studio で新しい ​**Mule プロジェクト**​を作成します。
2. テストするアプリケーションの XML コードをプロジェクトの ​**\[Configuration XML (設定 XML)\]**​ ビューにコピーします。
3. [\[Add Modules (モジュールを追加)](https://docs.mulesoft.com/studio/add-modules-in-studio-to)\]​ を使用して、ファイル用 Anypoint Connector (File Connector) をプロジェクトに追加します。
4. Mule アプリケーションの ​`src/main/resources`​ フォルダー内に ​`flatfileconfig.properties`​ という名前のファイルを作成し、次のプロパティを使用してそのコンテンツを設定します。
    
    fileReadPath=flatfile
    schemaPath=flatfileschema.ffd
    fileWritePath=flatfilenew
    jsonFileReadPath=flatFileJson.json
    fileWorkingDir=#\["${mule.home}/apps/${app.name}/"\]
5. Mule アプリケーションの ​`src/main/resources`​ フォルダー内に ​`flatfile`​ という名前のファイルを作成し、DataWeave フラットファイルスキーマ例からの[フラットファイルサンプルデータ](https://docs.mulesoft.com/jp/dataweave/2.7/%3Cdataweave-flat-file-schemas#flat-file-sample-data >)を使用してその内容を設定します。
6. Mule アプリケーションの ​`src/main/resources`​ フォルダー内に ​`flatfileschema.ffd`​ という名前のファイルを作成し、DataWeave フラットファイルスキーマ例からの​[完全なスキーマ例](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-flat-file-schemas#full_schema_ex)​を使用してその内容を設定します。
7. Mule アプリケーションの ​`src/main/resources`​ フォルダー内に ​`flatFileJson.json`​ という名前のファイルを作成し、フラットファイルを読み取る例からの ​[JSON 変換出力](#json-transformation-output)​を使用してそのコンテンツを設定します。

## [](#関連情報)関連情報

- [フラットファイル形式](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-formats-flatfile)
- [フラットファイルスキーマ](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-flat-file-schemas)
- [リーダーとライターのプロパティの設定](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-cookbook-set-reader-writer-props)
- [プロパティの設定](https://docs.mulesoft.com/mule-runtime/latest/configuring-properties)