从 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 Objects
和 SqlBulkCopy
将内存中的数据表传输到 sql server 数据库。
请参阅this 链接了解更多信息。希望这对您有所帮助。
【讨论】:
以上是关于从 DataSet 创建 SQL Server DB的主要内容,如果未能解决你的问题,请参考以下文章
c# sql server 读取数据库中最后一行的数据 然后每个字段的数据赋值给一个变量
SQL Server子查询填充DataSet时报500内部错误的解决办法