2

我有一个要求,我必须从 sql server 本地数据库中读取数据,并首先将其映射到另一个第三方组织提供的 XML 文件中。谁有自己的数据库。然后,一旦我有正确的字段映射,我必须将数据从 sql server 数据库转换为 XML 格式,反之亦然。到目前为止,我可以在 mirthconnect 中连接 sqlserver 数据库,但是我不知道需要在通道和转换器中创建哪些步骤来执行读取数据并将相应字段映射到第三方提供的 XML 格式并最终写入 XML 文件的任务提供,反之亦然。

简而言之,如果我可以在 mirth connect 中获取创建此类通道的详细信息,我可以在其中读取 sql server 数据库并将字段映射到相应的 xml 文件中......我想我可以写入它。如果我从 xml 格式转到 sqlserver 数据库,同样的方法也适用。有人能告诉我如何做到这一点吗?

对于数据库字段映射,将字段完全映射到两个不同数据库的最佳方式是什么,是否有任何工具可以提供帮助......

此外,一旦完成将数据从一端转换到另一端的任务,是否有任何方法在 mirth connect 中验证数据是否正确地从一端移动到另一端?

4

1 回答 1

2

如果你想一次处理一行,普通的数据库阅读器就可以了;只需将所有步骤的摘要下的数据类型设置为 XML。将频道编写器的目的地设置为无处并运行一次以查看它在仪表板中的作用。您可以将其作为示例复制并粘贴到您的消息模板中,以便映射变量。

如果您想在 Transformer 步骤中一次处理整个结果,我发现创建自定义阅读器并在我的 Microsoft SQL 查询末尾使用“FOR XML RAW, 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 回答