C# 从数据集创建SQL Server数据库
我在C# 从数据集创建SQL Server数据库,c#,sql,sql-server,xml,dataset,C#,Sql,Sql Server,Xml,Dataset,我在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 + "
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>
或
或
最后,我需要脚本来创建具有列大小的db表(如xsd)
UPD:可能使用
XmlSchemaSet
来解析XSD?我想没有通用的解决方案。XSD
可以很容易地描述一些不映射到关系数据库的东西。虽然您可以尝试“自动化”这一点,但您的XSD必须在设计时考虑到关系数据库,否则将无法正常工作
但是,您可以使用SQLServer管理对象
和SqlBulkCopy
将内存中的数据表传输到SQLServer数据库
有关更多信息,请参阅链接。希望这对您有所帮助。使用
XSD2DB
XSD2DB是一个用C#
编写的命令行工具,它将读取Microsoft ADO.NET兼容的数据集模式文件(XSD)
,并生成数据库
在这种情况下,脚手架能帮助您吗
也许看一看,我知道有一种方法可以首先使用脚手架对数据库进行反向工程遍历DataTable的Columns属性的DataColumn,并创建适当的列定义。我不明白您的意思(检查;)。您应该将XML直接导入SQL Server以创建新的数据库。无需使用C#应用程序。试试这个:您可以从数据集列中获取数据类型、最大长度以及可能更多的信息。。。
<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>