2

SQL Server ローカル データベースからデータを読み取り、最初に別のサード パーティ組織が提供する XML ファイルにマップする必要があるという要件があります。独自のデータベースを持っている人。次に、フィールドを適切にマッピングしたら、データを SQL Server データベースから XML 形式に、またはその逆に変換する必要があります。これまでのところ、私は mirthconnect で sqlserver データベースに接続できますが、データを読み取り、対応するフィールドをサードパーティが提供する XML 形式にマッピングし、最後に XML ファイルに書き込むタスクを実行するためにチャネルとトランスフォーマーで作成するために必要な手順はわかりません提供され、その逆も同様です。

要するに、SQLサーバーデータベースを読み取り、対応するxmlファイルのフィールドをマップできるmirth connectでそのようなチャネルを作成する詳細を取得できれば....それに書き込むことができると思います。xml 形式から sqlserver データベースに移行する場合も、同じ方法が適用されます。誰かがこれを達成する方法を教えてもらえますか?

データベース フィールド マッピングの場合、フィールドを 2 つの異なるデータベースに完全にマッピングするための最良の方法はありますか?

また、データを一方の端から他方の端に変換するタスクが完了したら、データが一方から他方に正しく移動されていることを検証する mirth connect の検証方法はありますか?

4

1 に答える 1

2

一度に1行を処理する場合は、通常のデータベースリーダーが正常に機能します。すべてのステップで、[概要]の下のデータ型をXMLに設定するだけです。チャネルライターの宛先をnowhereに設定し、それを1回実行して、ダッシュボードでの動作を確認します。これを例としてコピーしてメッセージテンプレートに貼り付けると、変数をマップできます。

Transformerの手順で一度に結果全体を処理したい場合は、カスタムリーダーを作成し、MicrosoftSQLクエリの最後に「FORXMLRAW、ELEMENTS」を使用する方が簡単です。何かのようなもの:

    //build connection
    var dbConn =      DatabaseConnectionFactory.createDatabaseConnection('com.microsoft.sqlserver.jdbc.SQLServerDriver','jdbc:sqlserver://servername:1433;databaseName=dbname;integratedSecurity=true;','','');  //this uses the MS JDBC driver and auth dll
    //query results with XML output from server  'FOR XML' statement at end
    var result = dbConn.executeCachedQuery("SELECT col1 AS FirstColumn, col2 AS SecondColumn FROM [dbname].[dbo].[table1] WHERE [processed] = 'False' FOR XML RAW, ELEMENTS");

    //Make sure we are at the top of results
    result.beforeFirst();

    //wrap XML.  Namespace etc. not required
    XMLresult = '<message>';

    //XML broke up across several rows in one column.  Re-combine
    while (result.next()) {

    XMLresult += result.getString(1);

    }

    XMLresult += '</message>';

    dbConn.close();

    return XMLresult;
于 2012-09-26T15:53:57.143 に答える