在SQL中插入多个XML文件

在SQL中插入多个XML文件,sql,xml,oracle,Sql,Xml,Oracle,我有一个大约70-100个标记的大型XML文件,包括列表(子节点)等。我有一个Oracle数据库设置,所有表都与标记名匹配。我想知道将XML中的所有数据插入Oracle数据库的最快方法是什么。我已经在下面编写了此方法,但是为80个表编写此方法将变得非常乏味: public ActionResult writexmldata() { var file = System.IO.Directory.GetFiles("C:\\Workspace\\CPTStaging",

我有一个大约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");
    }

我将编写一个代码生成器,我将使用您编写的方法作为模板,将对系统表
all_tab_columns
all_table
,运行查询,并将生成70-80个类似的方法