用于复制表模式的简洁/优雅方法?

时间:2015-01-09 23:30:55

标签: c# .net sql-server ado.net

我有一个带有任意架构的表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#类型。也许这种方法根本不能用于确保相同的列结构?

1 个答案:

答案 0 :(得分:2)

您可以执行一个空的select命令并将其存储到一个新表中,以便创建一个与旧表具有相同模式的表,您可以在以后使用它执行所需的操作。

select * into new_table from old_table where 1 = 0

执行此sql命令将创建一个空表,其中包含与所需表相同的模式。