将数据从 XML 文件导入 SQL 数据库

本文关键字:导入 SQL 数据库 文件 XML 数据 | 更新日期: 2023-09-27 18:35:47

是否可以将数据从XML文件导入SQL数据库,如果是,如何完成。我有一个包含大约 50 000 个条目的 XML 文件,我必须创建一个应用程序来操作该数据(主要是读取和比较) - 所以我担心的是,对这些数据量的操作(并且很可能在未来会有更多)将非常缓慢且效率低下。如果您认为还有其他更好的选择,请告知。谢谢

将数据从 XML 文件导入 SQL 数据库

您可以使用 SQL Server 导入和导出向导。您还可以查看 SQL Server Integration Services。如果要使用 C#,则 SQL Server 确实支持 XML 数据类型。你可以利用它。

您还可以尝试读取数据集中的数据,然后使用大容量插入在 SQL Server 中插入数据

DataSet reportData = new DataSet();
reportData.ReadXml(Server.MapPath("yourfile.xml"));
SqlConnection connection = new SqlConnection("DB ConnectionSTring");
SqlBulkCopy sbc = new SqlBulkCopy(connection);
sbc.DestinationTableName = "yourXMLTable";

编辑:对于SQL Server 2005,请检查SQL Server 2005导入/导出向导

尝试查看微软的SSIS工具SQL Server 集成服务

http://msdn.microsoft.com/en-us/library/ms141026.aspx

http://www.microsoft.com/sqlserver/en/us/solutions-technologies/enterprise-information-management/integration.aspx

使用此工具,您可以创建保存和运行导入包,并具有过滤和自定义选择。也许您可以将其用作问题的整体解决方案。

有些产品(如 Snaplogic)具有"snaps",这意味着连接器可以读取 xml 文件、解析它,然后将其移动到数据库中,而无需编写任何代码行。看看Snaplogic。

在这种情况下,

我得到了这样的要求,例如从xml文件中读取数据并将该xml文件作为参数发送到存储过程有用的链接http://www.aspdotnet-suresh.com/2012/12/aspnet-send-xml-file-as-parameter-to.html

另一个需要考虑的选项是:

给定以下 xml

<?xml version="1.0" standalone="yes" ?>
<Clients>
  <Client>
    <Id>1</Id>
    <FirstName>FirstName1</FirstName>
    <LastName>LastName1</LastName>
  </Client>
  <Client>
    <Id>2</Id>
    <FirstName>FirstName2</FirstName>
    <LastName>LastName2</LastName>
  </Client>
</Clients>

可以使用以下查询来选择内容。

select 
    x.a.query('Id').value('.', 'int') as Id
    , x.a.query('FirstName').value('.', 'nvarchar(50)') as FirstName
    , x.a.query('LastName').value('.', 'nvarchar(50)') as LastName  
from 
( 
    select CAST(x AS XML) from OPENROWSET
    (BULK 'C:'Users'jmelosegui'Desktop'Clients.xml', SINGLE_BLOB) as T(x)
) T(x)
cross Apply x.nodes('Clients/Client') as x(a)

完成此操作后,您可以在插入数据后与其他表联接或进行匹配,并且全部从 sql 服务器端进行。

它在很大程度上取决于XML文件的复杂性(对象的深度与嵌套对象的深度,数据的种类和大小等)。

如果你有知识,SSIS 可以是一个解决方案,但一个简单的 c# 应用程序也可以完成这项工作。

申请应:

  1. 定义表示数据的持久性不可知类
  2. 读取 XML 以加载此类的列表(在非常大的卷上可能需要分页
  3. 使用 ADO 或 linq to SQL 将数据推送到 dabase(实体框架是可能的,但对于简单的批量导入来说可能太多了

另一种方法也可以使用执行相同类型作业的简单 powershell 脚本。