1

以下のようなJSONファイルがあります

[ 
  { "category": "reference",
    "author": "Nigel Rees",
    "title": "Sayings of the Century",
    "price": 8.95
  },
  { "category": "fiction",
    "author": "Evelyn Waugh",
    "title": "Sword of Honour",
    "price": 12.99
  }
]

ファイルを読み取り、データをPostgreSQLデータベースに保存しようとしています。私の構成xmlファイルは次のとおりです

<jdbc:postgresql-data-source name="PostgreSQL_Data_Source" user="superuser" password="pwd" url="jdbc:postgresql://localhost:5432/TestDB" transactionIsolation="UNSPECIFIED" doc:name="PostgreSQL Data Source"/>
    <jdbc:connector name="Database-Connector" dataSource-ref="PostgreSQL_Data_Source" validateConnections="true" queryTimeout="-1" pollingFrequency="0" doc:name="Database">
        <jdbc:query key="InsertQuery" value="INSERT INTO &quot;tblTest&quot;(category,author,title,price)VALUES (?,?,?,?)"/>
    </jdbc:connector>
    <flow name="testxmlFlow1" doc:name="testxmlFlow1">
        <file:inbound-endpoint path="C:\InputFolder" responseTimeout="10000" doc:name="File"/>
        <byte-array-to-string-transformer doc:name="Byte-Array-to-String"/>
        <jdbc:outbound-endpoint exchange-pattern="one-way" queryKey="InsertQuery" queryTimeout="-1" connector-ref="Database-Connector" doc:name="Database"/>
</flow>

完全なJSON列に保存しようとしているのではなく、最初に解析してから、カテゴリ、作成者、タイトル、価格などの個々のテーブル列に保存したいと考えています。

そのために構成ファイルでどのような変更を行う必要があり、それをどのように処理できますか?

ありがとう

4

1 に答える 1

2

JSONデータをに変換しjava.util.Listてからいくつかに分割しjava.util.Map、それぞれをDBに書き込みます。

<jdbc:postgresql-data-source name="PostgreSQL_Data_Source"
    user="superuser" password="pwd" url="jdbc:postgresql://localhost:5432/TestDB"
    transactionIsolation="UNSPECIFIED" doc:name="PostgreSQL Data Source" />

<jdbc:connector name="Database-Connector" dataSource-ref="PostgreSQL_Data_Source"
    validateConnections="true" queryTimeout="-1" pollingFrequency="0"
    doc:name="Database">
    <jdbc:query key="InsertQuery"
        value="INSERT INTO &quot;tblTest&quot;(category,author,title,price)VALUES (#[message.payload.category],#[message.payload.author],#[message.payload.title],#[message.payload.price])" />
</jdbc:connector>

<flow name="testxmlFlow1" doc:name="testxmlFlow1">
    <file:inbound-endpoint path="C:\InputFolder"
        responseTimeout="10000" doc:name="File" />
    <json:json-to-object-transformer
        returnClass="java.util.List" doc:name="JSON to List" />
    <collection-splitter />
    <jdbc:outbound-endpoint exchange-pattern="one-way"
        queryKey="InsertQuery" queryTimeout="-1" connector-ref="Database-Connector"
        doc:name="Database" />
</flow>
于 2012-12-24T18:35:45.043 に答える