【问题标题】:Create SQL Server DB from DataSet从 DataSet 创建 SQL Server DB
【发布时间】:2015-08-14 20:25:28
【问题描述】:

我在DataSet 中读取了xsd 和xml 文件,现在我想从DataSet 中创建数据库

foreach (DataTable dt in temp.Tables) {
    foreach (DataColumn dc in dt.Columns) {
        //example for one column
        SqlCommand createtable = new SqlCommand(
            "create table " + dt.TableName + " (" 
            + dc.ColumnName + "  varchar(max))", conn);
        createtable.ExecuteNonQuery();
    }
}

但是我有一些问题,当我创建 db 表时,我需要 XSD 中的列类型和大小(例如使用 varchar(max))。如何解决这个问题?

例如在 xsd 我有

<xs:restriction base="xs:string">
<xs:maxLength value="36"/>
<xs:minLength value="1"/>
</xs:restriction>

<xs:restriction base="xs:string">
<xs:maxLength value="40"/>
</xs:restriction>

<xs:restriction base="xs:decimal">
<xs:totalDigits value="19"/>
<xs:fractionDigits value="2"/>
</xs:restriction>

最后我需要脚本来创建具有列大小的数据库表(如在 xsd 中)

UPD:也许使用XmlSchemaSet 来解析 XSD?

【问题讨论】:

  • 遍历 DataTable 的 Columns 属性的 DataColumn(s) 并创建适当的列定义。
  • 我不明白你的意思
  • 检查this MSDN article ;)。
  • 您应该将 XML 直接导入 SQL Server 以创建新数据库。无需使用 C# 应用程序。试试这个:stackoverflow.com/questions/2628327/…
  • 您可以从数据集列中获取数据类型、最大长度以及可能更多信息...

标签: c# sql sql-server xml dataset


【解决方案1】:

使用XSD2DB

XSD2DB 是一个用C# 编写的命令行工具,它将读取Microsoft ADO.NET compatible DataSet Schema File (XSD) 并生成一个数据库。

link

【讨论】:

    【解决方案2】:

    在这种情况下,脚手架能帮到你吗?

    也许看看那个,我知道有一种方法可以先用脚手架对数据库进行逆向工程

    【讨论】:

      【解决方案3】:

      我想这没有通用的解决方案。 XSD 可以轻松描述未映射到关系数据库的内容。虽然您可以尝试“自动化”这一点,但您的 XSD 必须在设计时考虑到关系数据库,否则效果不佳。

      但是,您可以使用 SQLServer Management ObjectsSqlBulkCopy 将内存中的数据表传输到 sql server 数据库。

      请参阅this 链接了解更多信息。希望这对您有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-22
        • 1970-01-01
        • 2011-03-13
        • 1970-01-01
        • 1970-01-01
        • 2010-11-14
        相关资源
        最近更新 更多