【问题标题】:Import/export xml file to sql server将xml文件导入/导出到sql server
【发布时间】:2013-11-11 08:53:44
【问题描述】:

我正在研究 MVC4,我坚持使用必须以 xml 格式提供表备份的解决方案。我想要的是基于一些参数,如果数据存在于特定的表中,我必须获取这些数据,然后为该数据生成 xml。 例如。我有 3 张桌子

表 A 包含 FirstName、MiddleName、LastName 列 表 B 与列 FirstName,LastName 包含 FirstName、MiddleName、LastName 列的表 C

参数将是名字,中间名,姓氏

例如:如果我想获取所有带有名字和姓氏参数的记录......所以如果在上面的 3 个表中名字和姓氏匹配。

1.只有每个表的那些记录应该被转换成每个表的xml

我已经搜索“for xml、raw、auto、path”等...但可以得到结果。我应该使用哪一个?

因为在为每个表创建了 xml 文件后...我必须将这些文件恢复到 sql server?

谁能建议我如何以最佳方式实现此功能。

谢谢。

【问题讨论】:

    标签: sql-server xml asp.net-mvc-4


    【解决方案1】:

    您是否考虑过使用 LINQ to XML?

    样本可以是:

    XElement xTableA = new XElement
        (
            "TableA",
            TableA
            .Where(x=>x.FirstName == firstname && x.LastName == lastname)
            .Select
            (
                x=>
                new XElement
                (
                    "Row", 
                    new XElement("FirstName",x.FirstName), 
                    new XElement("MiddleName",x.MiddleName), 
                    new XElement("LastName",x.LastName)
                )
            );
    
    XElement xTableB = new XElement
        (
            "TableB",
            TableB
            .Where(x=>x.FirstName == firstname && x.LastName == lastname)
            .Select
            (
                x=>
                new XElement
                (
                    "Row", 
                    new XElement("FirstName",x.FirstName), 
                    new XElement("MiddleName",x.MiddleName), 
                    new XElement("LastName",x.LastName)
                )
            );
    
    XElement xTableC = new XElement
        (
            "TableC",
            TableC
            .Where(x=>x.FirstName == firstname && x.LastName == lastname)
            .Select
            (
                x=>
                new XElement
                (
                    "Row", 
                    new XElement("FirstName",x.FirstName), 
                    new XElement("MiddleName",x.MiddleName), 
                    new XElement("LastName",x.LastName)
                )
            );
    
    xTableA.Save(filenameA);
    xTableB.Save(filenameB);
    xTableC.Save(filenameC);
    

    这样你就有了三个 xml 文件,其中包含你请求的数据准备好导入...

    【讨论】:

    • ok..thanks.. 我可以试试这个.. 这样它会生成正确的 xml 文件以导入到 sql 中?
    • 为了回答我需要知道在你的情况下什么是“正确的”。如果您使用示例预期 xml 更新您的问题,我可以更新我的答案来实现这一点。
    • 先生的问题是我有大约 30 多个表,每个表都有很多列..所以首先我认为将所有表和列一一写出来不是一个好选择.. :(。 . 对于表/数据的类型,我创建了 sql fiddle sqlfiddle.com/#!3/edd08... 所以有很多这样的表...
    • 你可以用泛型函数来做到这一点,但它打败了我,对不起
    • @jyparask 先生,当我尝试运行您的代码时出现错误...我在您提到表名“TableA”的地方出现错误......错误是“它的类型,但用作变量”。 . 我错过了什么
    猜你喜欢
    • 1970-01-01
    • 2011-03-13
    • 2012-07-15
    • 1970-01-01
    • 2013-05-26
    • 2023-03-16
    • 1970-01-01
    • 2015-06-08
    • 2023-03-04
    相关资源
    最近更新 更多