有没有一个简单的方法可以使用C#或SQL将我有XSD的XML文件导入SQL数据库
本文关键字:SQL 数据库 XSD 导入 XML 文件 有一个 简单 方法 可以使 | 更新日期: 2023-09-27 18:28:32
我尝试了一些事情,首先我使用xsd.exe
生成了类,并快速编写了3行代码将xml导入C#中的内存。然而,XML相当复杂,并且有相当多的不同类型。
然后,我使用xsd2db创建了一个与.xsd定义匹配的数据库。
我正在寻找一种将XML导入数据库的简单方法,可以直接从对象中使用实体框架或类似的方法,也可以通过某种XML导入。
我试着使用SQL的导入数据功能(大概它可以自动化),但它不支持XML,只支持.CSV或.TXT
任何能给我指明正确方向的东西都将不胜感激,即使你没有直接的答案。
有不同的方法可以实现将数据从XML文件导入SQL Server表的任务。
使用OPENROWSET函数将XML文件中的XML数据导入SQL Server表使用OPENXML函数解析XML数据
http://www.mssqltips.com/sqlservertip/2899/importing-and-processing-data-from-xml-files-into-sql-server-tables/
没有"简单的方法"——这在很大程度上取决于XSD和XML的外观。
问题是,给定一个复杂的XML结构,不一定有一组明显的对应SQL表与之匹配:关系可能是隐藏的或不明显的,数据类型不完全匹配等等。因此,自动工具可能(也将)经常失败。
恐怕最好的方法是查看那些XSD/XML并手动创建目标数据库结构和传输代码。
我一直将XmlReader与EntityFramework CodeFirst一起使用。
简单地创建用于从xml反序列化的类(使用或不使用xsd),然后用xml属性和EF属性装饰它们。比如:
public class School
{
[XmlAttribute] //XML Serializer attribute
[MaxLength(30)] // CodeFirst Data Annotations
public string Name { get; set;}
[XmlArray]
public List<string> Students { get; set; }
}
但是,一开始需要花费一些时间,因为需要对类进行适当的修饰以匹配SQL Server中的XMLAnd表。