多个XML文件插入SQL

时间:2014-03-18 10:12:21

标签: sql xml oracle

我有一个包含大约70-100个标签的大型XML文件,包括列表(子节点)等。我有一个Oracle数据库设置,所有表都与标签名称匹配。我想知道将XML中的所有数据插入到我拥有的Oracle数据库中的最快方法是什么。我已经在下面编写了这个方法,但是为80个表格编写这个方法将变得非常繁琐:

   public ActionResult writexmldata()
    {
        var file = System.IO.Directory.GetFiles("C:\\Workspace\\CPTStaging", "*.xml");
        CPTEntities db;

        foreach (var xmldoc in file)
        {
            db = new CPTEntities();
            XDocument xdoc = XDocument.Load(xmldoc);
            XNamespace ns = "http://www.example.org/genericClientProfile";

            CPTPROFILE doc = new CPTPROFILE();
            db.CPTPROFILEs.AddObject(doc);
            db.SaveChanges();

            var header = xdoc.Descendants(ns + "header").Single();
            var cprofile = xdoc.Descendants(ns + "clientProfile").Single();
            var profadv = xdoc.Descendants(ns + "section").Single();

            H_HEADER head = new H_HEADER();

            head.SERVICEID = (string)header.Element(ns + "serviceId");
            head.VERSIONID = (decimal)header.Element(ns + "versionId");
            head.BRANDCODE = (string)header.Element(ns + "brandCode");
            head.CREATIONTIME = (DateTime)header.Element(ns + "creationTime");

            db.H_HEADER.AddObject(head);

            CP_PROFESSIONALADVISERS advisers = new CP_PROFESSIONALADVISERS();
            advisers.SUBCOMMENTWILLS = (string)profadv.Element(ns + "subCommentWills");

            db.CP_PROFESSIONALADVISERS.AddObject(advisers);

            db.SaveChanges(System.Data.Objects.SaveOptions.None);
        }

        return View("Index");
    }

1 个答案:

答案 0 :(得分:0)

我写了一个代码生成器,我使用你编写的方法作为模板,将对系统表all_tab_columnsall_tables运行查询,并生成70-80 simillar方法