Flex Gateway新着情報
Governance新着情報
Monitoring API Managerデータベース用 Anypoint Connector (Database Connector) の Insert 操作では、テーブルへのキャラクターラージオブジェクト (CLOB) の挿入がサポートされます。次の例は、大きなファイルのコンテンツを読み取って、そのコンテンツの型をサポートするテーブルにコンテンツを挿入する方法を示しています。
この例を実行するには、次の操作が必要です。
テーブルを作成する
Mule アプリケーションを作成する
アプリケーションを実行し、curl コマンドを使用してアプリケーションをテストする
任意の SQL クライアントツールを使用して、次の SQL ステートメントを含む .sql
スクリプトを実行してテーブルを作成します。
CREATE TABLE AWESOMECLOBDATA(
id INT AUTO_INCREMENT PRIMARY KEY,
clob_data CLOB
);
次の手順に従って Mule アプリケーションを作成します。
Studio で HTTP の [Listener] ソースをキャンバスにドラッグします。
HTTP グローバル接続を設定するために、[Connector configuration (コネクタ設定)] 項目の横にあるプラス記号 (+) をクリックします。
HTTP グローバル接続を設定して、[OK] をクリックします。
[Path (パス)] を /read-insert
に設定します。
[Logger] コンポーネントを [HTTP] の [Listener] ソースの右にドラッグします。
[Message (メッセージ)] を Starting LARGE CLOB reading
に設定します。
File Connector の [Read] 操作を [Logger] コンポーネントの右にドラッグします。
操作の設定画面の [General (一般)] タブで、[Connector configuration (コネクタ設定)] 項目の横にあるプラス記号 (+) をクリックし、グローバル要素設定項目にアクセスします。
ファイルを適切に読み取るために [Working Directory (作業ディレクトリ)] を /dir/containing/file/
に設定します。
[OK] をクリックします。
[File Path (ファイルパス)] を awesomeFile.json
に設定します。
[MIME Type (MIME タイプ)] タブで [MIME Type (MIME タイプ)] を application/octet-stream
に設定します。
別の [Logger] コンポーネントを [Read] 操作の右にドラッグします。
[Display Name (表示名)] を LARGE CLOB’s content on flow
と設定します。
Database Connector の [Insert] 操作を 2 番目の [Logger] コンポーネントの右にドラッグします。
データベースグローバル接続を設定するために、[Connector configuration (コネクタ設定)] 項目の横にあるプラス記号 (+) をクリックします。
データベース接続を設定して、[OK] をクリックします。
[SQL Query Text (SQL クエリテキスト)] を INSERT INTO AWESOMECLOBDATA (clob_data) VALUES (:payload)
に設定します。
SQL テキストでは、ファイルのコンテンツを含む新しいレコードをテーブルに挿入します。
[Input Parameters (入力パラメーター)] を式に設定します。
{
payload: payload
}
別の [Logger] コンポーネントを [Insert] 操作の右にドラッグします。
[Display Name (表示名)] を LARGE CLOB’s content inserted
と設定します。
[Message (メッセージ)] を式 payload
に設定します。
Mule アプリケーションを保存して実行します。
ターミナルで curl コマンド「curl localhost:8081/read-insert
」を使用して、アプリケーションをテストします。
application/octet-stream
MIME タイプでは、ファイルのコンテンツがバイナリ形式に変換されるため、Read 操作から Insert 操作にデータを適切に流すことができます。
たとえば、text/plain
MIME タイプを使用した場合、メモリ不足 (OOM) エラーが発生する可能性があります。これは、Insert 操作の [Input Parameters (入力パラメーター)] 項目で定義された DataWeave ブロックで、データを操作自体に配布する前に、ファイルからのデータストリーム全体をテキストに変換する操作が試行されるために発生する可能性があります。
application/json
MIME タイプを使用することもできます。ただし、ペイロードを参照するには、Insert 操作で payload.^raw
を使用します。
この例のフローをすばやく Mule アプリケーションに読み込むには、次のコードを Studio XML エディターに貼り付けます。
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core"
xmlns:db="http://www.mulesoft.org/schema/mule/db" xmlns:file="http://www.mulesoft.org/schema/mule/file"
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/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd 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/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd
http://www.mulesoft.org/schema/mule/db http://www.mulesoft.org/schema/mule/db/current/mule-db.xsd">
<http:listener-config name="HTTP_Listener_config" >
<http:listener-connection host="0.0.0.0" port="8081" />
</http:listener-config>
<file:config name="File_Config" >
<file:connection workingDir="/dir/containing/file/" />
</file:config>
<db:config name="dbConfig" >
<db:oracle-connection host="127.0.0.1" user="sys as sysdba" password="password" serviceName="orcl"/>
</db:config>
<flow name="read-insert-large-clob-file" >
<http:listener doc:name="/read-insert" config-ref="HTTP_Listener_config" path="/read-insert" />
<logger level="INFO" message="Starting LARGE CLOB reading" />
<file:read config-ref="File_Config" path='awesomeFile.json' outputMimeType="application/octet-stream" />
<logger level="INFO" doc:name="LARGE CLOB's content on flow" />
<db:insert doc:name="Insert LARGE CLOB" config-ref="dbConfig">
<db:sql><![CDATA[INSERT INTO AWESOMECLOBDATA (clob_data) VALUES (:payload)]]></db:sql>
<db:input-parameters><![CDATA[#[{
payload: payload
}]]]></db:input-parameters>
</db:insert>
<logger level="INFO" message="#[payload]" />
</flow>
</mule>