---
schema_version: "1"
id: 6066d5cb8c59325cae8a29f3e68f4a60ceff215a07d300d14193f7936446bf65
title: 一括操作の実行例
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/db-connector/1.13/database-execute-bulk.md
canonical_url: https://docs.mulesoft.com/jp/db-connector/1.13/database-execute-bulk
source_site: docs.mulesoft.com
content_type: documentation
content_hash: 6e5d264914194307396e40a4eb8852758fc0bd9ab33e2a2481e898af38a2ec93
description: MuleSoft Documentation Site
release: "1.13"
latest: false
---
# 一括操作の実行例

データベース用 Anypoint Connector (Database Connector) では、データを一括管理できるようにする ​**Bulk insert**​、​**Bulk update**​、​**Bulk delete**​ 操作がサポートされています。これにより、1 つの挿入、更新、または削除操作を何度も実行する場合よりもパフォーマンスが向上します。

これらの操作は、対応する単一操作と似ていますが、入力パラメーターをキー - 値のペアで受け取るのではなく、一括操作ではキー - 値のペアのリストとして受け取ることを想定しています。一括操作を実行すれば、不要なステップを回避して次の利点を得ることができます。

- クエリが 1 回だけ解析される
- 実行されるステートメントは 1 つのみのため、必要なデータベース接続は 1 つのみである
- ネットワークオーバーヘッドを最小限に抑えられる
- RDBMS で一括操作を実行できる。

一括操作の一部のステートメントが正常に実行されても、他のステートメントがエラーとなることがあります (たとえば、​**Bulk insert**​ 操作で 100 行のうち 1 行の挿入に失敗すると、エラーの内容を示す例外が 1 件スローされます)。実行を直ちに中止して残りの操作をすべて無視するか、または残りのステートメントの実行を継続するかは、ドライバーが決定します。どちらの場合でも、エラーが発生した場合には、Mule アプリケーションログでエラーの原因を確認してください。

次の例は、MySQL データベースで顧客データと商品データを挿入、更新、削除する操作を Mule アプリケーションで設定する方法を示しています。この例を実行するには、次の操作が必要です。  

- `CUSTOMERS`​ と ​`PRODUCTS`​ という 2 つのテーブルを作成する SQL ステートメントを実行します。
- SQL データベース接続を設定します。
- Mule アプリケーションを作成します。
- アプリケーションを実行し、curl コマンドを使用してアプリケーションをテストします。

![Bulk insert、Bulk update、Bulk delete のフロー](/mulesoft/current/ja-jp/db-connector/1.13/_images/database-bulkoperations-flow.png)

## [](#データベースのテーブルの作成)データベースのテーブルの作成

SQL データベース接続を設定して Mule アプリケーションを作成する前に、次の SQL ステートメントを実行して ​`CUSTOMERS`​ と ​`PRODUCTS`​ というテーブルを作成し、4 件の商品データをテーブル ​`PRODUCTS`​ に挿入します。

```sql
CREATE DATABASE DEMO;

USE DEMO;

CREATE TABLE CUSTOMERS (
ID bigint AUTO_INCREMENT PRIMARY KEY,
NAME varchar(30) NOT NULL,
LAST_NAME varchar(30) NOT NULL
);

CREATE TABLE PRODUCTS (
ID bigint AUTO_INCREMENT PRIMARY KEY,
PRICE numeric(8, 2) NOT NULL,
ITEM varchar(30) NOT NULL
);

INSERT INTO PRODUCTS (PRICE, ITEM) values (50.0, 'shampoo');
INSERT INTO PRODUCTS (PRICE, ITEM) values (150.5, 'olive oil');
INSERT INTO PRODUCTS (PRICE, ITEM) values (11, 'coconut oil');
INSERT INTO PRODUCTS (PRICE, ITEM) values (133, 'wine');
```

## [](#mysql-データベース接続の設定)MySQL データベース接続の設定

テーブルを作成したら、Anypoint Studio に移動して MySQL データベース接続を設定します。

1. Studio で新しい Mule プロジェクトを作成します。
2. **\[Global Elements (グローバル要素)\]**​ ビューに移動します。
3. **\[Create (作成)\]**​ をクリックして、​**\[Choose Global Type (グローバル種別の選択)\]**​ ビューを開きます。
4. **\[Filter (検索条件)\]**​ 項目に「​`http`​」と入力し、​**\[HTTP Listener config (HTTP リスナー設定)\]**​ を選択して ​**\[OK\]**​ をクリックします。  
    この設定は、Mule アプリケーションフローを開始する HTTP ​**Listener**​ ソース用です。
5. **\[HTTP Listener config (HTTP リスナー設定)\]**​ ウィンドウで、次の項目に入力します。
    
    - **Protocol (プロトコル)**​: `HTTP (Default)`
    - **Host (ホスト)**​: `All Interfaces [0.0.0.0] (default)`
    - **Port (ポート)**​: `8081`

1. **\[OK\]**​ をクリックします。
2. **\[Global Elements (グローバル要素)\]**​ ビューで ​**\[Create (作成)\]**​ をクリックして ​**\[Choose Global Type (グローバル種別の選択)\]**​ ビューを開きます。
3. **\[Filter (検索条件)\]**​ 項目に「​`database`​」と入力し、​**\[Database Config (データベース設定)\]**​ を選択して ​**\[OK\]**​ をクリックします。
4. **\[Database Config (データベース設定)\]**​ ウィンドウで ​**\[Name (名前)\]**​ を ​`dbConfig`​ に設定します。
5. **\[Connection (接続)\]**​ 項目で ​**\[MySQL Connection (MySQL 接続)\]**​ を選択します。
6. **\[Configure (設定)\]**​ をクリックし、必要な MySQL JDBC ドライバーを追加して、次のいずれかを選択します。  
    
    - **Add recommended library (推奨されるライブラリを追加)**​  
        推奨されるライブラリをインストールします。
    - **Use local file (ローカルファイルを使用)**​  
        ローカルファイルを使用してライブラリをインストールします。
    - **Add Maven dependency (Maven 連動関係を追加)**​  
        Maven 連動関係をインストールしてプロジェクトに追加します。
7. **\[Connection (接続)\]**​ セクションで、次の項目に入力します。  
    
    - **Host (ホスト)**​: `localhost`
    - **Port (ポート)**​: `3306`
    - **User (ユーザー)**​: `root`
    - **Password (パスワード)**​: `mulesoft`
    - **Database (データベース)**​: `demo`
8. **\[Test Connection (接続をテスト)\]**​ をクリックして、Mule がデータベースに接続できることを確認します。
9. **\[OK\]**​ をクリックします。

![HTTP リスナーのグローバル要素設定](/mulesoft/current/ja-jp/db-connector/1.13/_images/database-querysingle-example-1.png)

次のスクリーンショットは、データベースのグローバル要素設定を示しています。

![「\[Host (ホスト)\]、\[Port (ポート)\]、\[User (ユーザー)\]、\[Password (パスワード)\] 項目を設定するデータベースの一般設定。」](_images/database-bulk-example-2.png)

## [](#最初のフローの作成)最初のフローの作成

最初のフローは、顧客の項目を ​`CUSTOMERS`​ テーブルに一括挿入します。このフローを作成する手順は、次のとおりです。

1. **\[Mule Palette (Mule パレット)\]**​ ビューで、\[HTTP\] の ​**\[Listener\]**​ ソースを選択してキャンバスにドラッグします。  
    このソースは受信 HTTP メッセージ属性をリスンすることでフローを開始します。
2. **\[Connector configuration (コネクタ設定)\]**​ 項目で ​`HTTP_Listener_config`​ グローバル設定を選択します。
3. **\[Path (パス)\]**​ を ​`/insert`​ に設定します。
4. **\[Bulk insert\]**​ 操作を ​**\[Listener\]**​ ソースの右にドラッグします。
5. **\[Connector configuration (コネクタ設定)\]**​ で ​`Database_Config`​ を選択します。
6. **\[Input Parameters (入力パラメーター)\]**​ に次の式を入力します。
    
    `[{'id': 2, 'name': 'George', 'lastName': 'Costanza'}, {'id': 3, 'name': 'Cosmo', 'lastName': 'Kramer'}]`
7. **\[SQL Query text (SQL クエリテキスト)\]**​ に以下を入力します。
    
    `INSERT INTO CUSTOMERS (NAME, LAST_NAME) values (:name, :lastName)`

## [](#2-つ目のフローの作成)2 つ目のフローの作成

2 つ目のフローは、​`PRODUCTS`​ テーブルで商品の価格を一括更新します。このフローを作成する手順は、次のとおりです。

1. **\[Mule Palette (Mule パレット)\]**​ ビューで、\[HTTP\] の ​**\[Listener\]**​ ソースを選択して、最初のフローの下にドラッグします。  
    このソースは受信 HTTP メッセージ属性をリスンすることでフローを開始します。
2. **\[Connector configuration (コネクタ設定)\]**​ 項目で ​`HTTP_Listener_config`​ グローバル設定を選択します。
3. **\[Path (パス)\]**​ を ​`update`​ に設定します。
4. **\[Set Payload\]**​ コンポーネントを ​**\[Listener\]**​ ソースの右にドラッグします。
5. **\[Value (値)\]**​ に次の式を入力します。
    
    ```text
    [{
    	discountRate: 0.1,
    	price: 50
    },
    {
    	discountRate: 0.2,
    	price: 150.5
    }]
    ```
6. **\[Bulk update\]**​ 操作を ​**\[Set Payload\]**​ ソースの右にドラッグします。
7. **\[Connector configuration (コネクタ設定)\]**​ で ​`Database_Config`​ を選択します。
8. **\[SQL Query text (SQL クエリテキスト)\]**​ に次の式を入力します。
    
    `UPDATE PRODUCTS SET PRICE = PRICE * :discountRate WHERE PRICE = :price`

## [](#3-つ目のフローを作成する)3 つ目のフローを作成する

3 つ目のフローは、​`PRODUCTS`​ テーブルから商品データを一括削除します。このフローを作成する手順は、次のとおりです。

1. **\[Mule Palette (Mule パレット)\]**​ ビューで、\[HTTP\] の ​**\[Listener\]**​ ソースを選択して、最初のフローの下にドラッグします。  
    このソースは受信 HTTP メッセージ属性をリスンすることでフローを開始します。
2. **\[Connector configuration (コネクタ設定)\]**​ 項目で ​`HTTP_Listener_config`​ グローバル設定を選択します。
3. **\[Path (パス)\]**​ を ​`/delete`​ に設定します。
4. **\[Set Payload\]**​ コンポーネントを ​**\[Listener\]**​ ソースの右にドラッグします。
5. **\[Value (値)\]**​ に次の式を入力します。
    
    ```text
    [{
    	price: 11
    },
    {
    	price: 133
    }]
    ```
6. **\[Bulk delete\]**​ 操作を ​**\[Set Payload\]**​ コンポーネントの右にドラッグします。
7. **\[Connector configuration (コネクタ設定)\]**​ で ​`Database_Config`​ を選択します。
8. **\[SQL Query text (SQL クエリテキスト)\]**​ に次の式を入力します。
    
    `DELETE FROM PRODUCTS WHERE PRICE = :price`

## [](#mule-アプリケーションの実行とテスト)Mule アプリケーションの実行とテスト

Mule アプリケーションを実行およびテストする手順は、次のとおりです。

1. Studio でプロジェクトを保存します。
2. **\[Run (実行)\] > \[Run (実行)\]**​ をクリックしてアプリケーションをデプロイします。
3. インターネットブラウザーで、次の CURL コマンドを実行してアプリケーションをテストします。  
    `curl [http://localhost:8081/insert](http://localhost:8081/insert)`  
    `curl [http://localhost:8081/update](http://localhost:8081/update)`  
    `curl [http://localhost:8081/delete](http://localhost:8081/delete)`

## [](#mule-アプリケーションの-xml-の例)Mule アプリケーションの XML の例

この例のフローをすばやく Mule アプリケーションに読み込むには、次のコードを Studio XML エディターに貼り付けます。

```xml
<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:db="http://www.mulesoft.org/schema/mule/db" xmlns:http="http://www.mulesoft.org/schema/mule/http"
	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/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/db http://www.mulesoft.org/schema/mule/db/current/mule-db.xsd">
	<db:config >
		<db:my-sql-connection host="localhost" port="3306" user="root" password="mulesoft" database="demo" />
	</db:config>
	<http:listener-config name="HTTP_Listener_config" >
		<http:listener-connection host="0.0.0.0" port="8081" />
	</http:listener-config>
	<flow name="dbcon-demoFlow">
		<http:listener config-ref="HTTP_Listener_config" path="/insert"/>
		<db:bulk-insert config-ref="Database_Config">
			<db:bulk-input-parameters ><![CDATA[#[[{'id': 2, 'name': 'George', 'lastName': 'Costanza'}, {'id': 3, 'name': 'Cosmo', 'lastName': 'Kramer'}]]]]></db:bulk-input-parameters>
			<db:sql ><![CDATA[INSERT INTO CUSTOMERS (NAME, LAST_NAME) values (:name, :lastName)]]></db:sql>
		</db:bulk-insert>
	</flow>
	<flow name="dbcon-demoFlow1" >
		<http:listener config-ref="HTTP_Listener_config" path="update"/>
		<set-payload value="#[[{
	discountRate: 0.1,
	price: 50
},
{
	discountRate: 0.2,
	price: 150.5
}]]" doc:name="Set Payload" />
		<db:bulk-update config-ref="Database_Config">
			<db:sql ><![CDATA[UPDATE PRODUCTS SET PRICE = PRICE * :discountRate WHERE PRICE = :price]]></db:sql>
		</db:bulk-update>
	</flow>
	<flow name="dbcon-demoFlow2" >
		<http:listener config-ref="HTTP_Listener_config" path="/delete"/>
		<set-payload value="#[[{
	price: 11
},
{
	price: 133
}]]" doc:name="Set Payload" />
		<db:bulk-delete doc:name="Bulk delete" config-ref="Database_Config">
			<db:sql ><![CDATA[DELETE FROM PRODUCTS WHERE PRICE = :price]]></db:sql>
		</db:bulk-delete>
	</flow>
</mule>
```

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

- [Database Connector の例](https://docs.mulesoft.com/jp/db-connector/1.13/database-connector-examples)