c# - 从 xpath 创建 SQL 数据库结构

标签 c# sql xml

我正在尝试将 xml 文件的内容转储到 sql 表(关系格式)中。

过去,我使用过 dataset.readxml,但在处理多对多关系时遇到了一些问题。

所以我采用了如下方法,为 xml 文件中的所有元素和属性创建一个唯一的 xpath 表达式列表,然后使用这些表达式创建一个 sql db 结构来保存这些数据。

我想创建此功能作为动态实现来处理任何 xml。

假设我有一个xml文件,唯一的Xpath如下

/movie/MovieId[1]  
/movie/MovieName[1]  

/movie/cast[1]  
/movie/cast[1]/name[1]  
/movie/cast[1]/name[2]  
/movie/cast[1]/name[3]/@rolename 

/movie/description[1]  
/movie/directors[1]  
/movie/directors[1]/name[1]  
/movie/directors[1]/name[1]  
/movie/directors[1]/name[2]  
/movie/directors[1]/name[3]  
/movie/releasedate[1]  
/movie/releasedate[1]/@reldatetestatt  
/movie/runtime[1]  

我希望创建的表结构如下:

表名:电影
列:MovieId、MovieName、description、releaseate、reldatetestatt、runtime

表名:类型转换
列:MovieId、名称、角色名

表名:董事
列:MovieId、名称

示例 Xml 供您引用:

var xml = @"<movies>
   <movie>
   <MovieId>277345</MovieId>
   <MovieName>The Life and Passion of Jesus Christ</MovieName>
    <description>The Gospels of the New Testament.</description>
    <runtime>44</runtime>
    <releasedate reldatetestatt='testattribute'>3/26/1904 12:00:00 AM</releasedate>
    <directors>
        <name>Lucien Nonguet</name>
        <name>Ferdinand Zecca</name>
        <name>Ferdinand Zecca 2</name>
    </directors>
    <cast>
        <name rolename='test'>Madame Moreau</name>
        <name>Monsieur Moreau</name>
    </cast>
    </movie>
</movies>";

最佳答案

你可以试试 Talend Open Studio (又名 Jaster ETL)。它会愉快地获取 xml 并填充数据库。您可以从 UI 执行此操作或将“作业”导出为独立的 Java 代码。

关于c# - 从 xpath 创建 SQL 数据库结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8238740/

相关文章:

如果子查询包含 NULL,SQL select with "IN"子查询不返回任何记录

c# - 在 MonoTouch 中的 View Controller (缓存数据)之间传递数据的最佳方式

c# - 将整个 bool[] 设置为 false

sql - 如何找到指定列表中的第一个值?

sql - 存储过程返回一个字符串?

sql-server - MS SQL-Server 中具有多个 XML 命名空间的 t-sql

xml - 如何使用 xpath 查找另一个节点中指定的 id 的 xml 节点

c# - 如何解析 XML 字符串 c#

c# - 在带或不带 try/catch 的 SQL 中使用唯一键作为验证数据完整性的有效方法

c# - Nest Client c# 7.0 用于 Elasticsearch 删除别名