我有一个带有任意架构的表T1。我想创建一个具有相同模式的第二个表T2,然后将一些数据从T1移植到T2。我可以轻松地手动创建T2(具有相同的列名和类型),但它不是一个优雅的解决方案。
我刚开始使用ADO.net,刚刚发现了SqlDataAdapter
类,我可以用它来提取包含DataTable
的{{1}}。如果可能的话,我想以某种方式直接使用这个DataColumnCollection
来定义一个新表,有点这样:
DataColumnCollection
是否有可以轻松实现此功能的API?我当前的方法涉及迭代DataTable dt = new DataTable("Table2", originalDataColumnCollection);
sqlDataAdapter.MakeTable(dt);
以构建originalDataColumnCollection
字符串,然后通过create table Table2 (...)
提交。
更新
我刚注意到我无法从SqlCommand
获取SQL类型,而是让我返回C#类型。也许这种方法根本不能用于确保相同的列结构?
答案 0 :(得分:2)
您可以执行一个空的select命令并将其存储到一个新表中,以便创建一个与旧表具有相同模式的表,您可以在以后使用它执行所需的操作。
select * into new_table from old_table where 1 = 0
执行此sql命令将创建一个空表,其中包含与所需表相同的模式。