如何自动将表格导出到MSSQL或Access中正确的XML文件中?


1

我们有一位客户以XML格式请求数据。通常这不是必需的,因为我们通常只需交出Access数据库或csv文件,这就足够了。但是在这种情况下,我需要自动从十几个表中导出正确的XML。

如果我可以做到SQL Server 2005以外,那将是首选。但是我不能为了我的生活找到办法做到这一点。我可以转储出原始的XML数据,但这只是具有属性值的每行标签。我们需要一些代表表格结构的东西。 Access以xml格式输出,可以满足我们的需求。不过,我不确定这是如何实现自动化的。它似乎没有以任何方式通过SQL,所以我试图追踪必要的代码,通过宏或VBScript导出XML。

有什么建议吗?

0

有一个宏的概述here用于将数据从访问数据库导出到xml文件,这可能对您有些用处。

Const acExportTable = 0 

Set objAccess = CreateObject("Access.Application") 
objAccess.OpenCurrentDatabase "C:\Scripts\Test.mdb" 

'Export the table "Inventory" to test.xml 
objAccess.ExportXML acExportTable,"Inventory","c:\scripts\test.xml" 

0

最简单的方法来做到这一点,我能想到的是创建一个小应用程序来为你做。你可以把它作为一个基本的WinForm,然后利用一个LinqToSql dbml类来表示你的数据库。大多数情况下,您可以使用XmlSerializer命名空间对这些对象进行序列化。有时它比这更难,这取决于数据库的复杂性。看看这篇文章的LinqToSql和Xml序列化的一些详细信息: http://www.west-wind.com/Weblog/posts/147218.aspx

希望有所帮助。


1

查看使用FOR XML AUTO。根据您的要求,您可能需要使用EXPLICIT。

作为一个简单的例子:

SELECT 
    * 
FROM 
    Customers 
INNER JOIN Orders ON Orders.CustID = Customers.CustID 
FOR XML AUTO 

这将产生与客户的内部订单嵌套的XML文档。然后你可以使用SSIS将它导出到一个文件中,很容易我就会想到。虽然我没有尝试过。

  0

这不退出获得我需要什么,但是我在MSSQL2005中找到了一篇关于“FOR XML”的文章,我认为它涵盖了我需要的东西。 23 9月. 082008-09-23 19:58:10

  0

我的意思是说...感谢让我走上正轨 23 9月. 082008-09-23 20:37:10


1

如果你想要一个文件而不是片段,你可能需要一个两部分解决方案。但是,这两个部分都可以在SQL Server中完成。

它看起来像你发现ELEMENTS参数的汤姆的条目评论,所以你得到的字段作为子元素而不是属性。不过,你仍然会得到一个片段,因为你不会得到一个根节点。

有不同的方法可以处理这个问题。使用XSLT转换XML文档的SQL Server provides a method,因此您可以创建XSL样式表以将查询结果包装到根元素中。您还可以添加客户的模式所需的任何其他内容(假设他们有一个)。

如果你想将某些字段属性和让别人元素,你也可以使用XSLT来移动这些领域,所以你可能最终的东西是这样的:

<customer id="204"> 
    <firstname>John</firstname> 
    <lastname>Public</lastname> 
</customer>