从 DataSet 创建 SQL Server DB

Posted

技术标签:

【中文标题】从 DataSet 创建 SQL Server DB【英文标题】:Create SQL Server DB from DataSet 【发布时间】: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# 应用程序。试试这个:***.com/questions/2628327/… 您可以从数据集列中获取数据类型、最大长度以及可能更多信息... 【参考方案1】:

使用XSD2DB

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

link

【讨论】:

【参考方案2】:

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

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

【讨论】:

【参考方案3】:

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

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

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

【讨论】:

以上是关于从 DataSet 创建 SQL Server DB的主要内容,如果未能解决你的问题,请参考以下文章

c# sql server 读取数据库中最后一行的数据 然后每个字段的数据赋值给一个变量

SQL Server子查询填充DataSet时报500内部错误的解决办法

将 200 万行快速插入 SQL Server

vb.net访问sql server数据库(SqlDataReader和DataSet两种方式)

来自带有时区的 SQL Server 的 DateTime

SQL Server的高级知识