Concise/elegant 复制 table 架构的方法?
Concise/elegant method for duplicating a table's schema?
我有一个带有任意模式的 table T1。我想用相同的架构创建第二个 table T2,然后将一些数据从 T1 移植到 T2。我可以很容易地手动创建 T2(具有相同的列名和类型),但这不是一个优雅的解决方案。
我刚开始使用 ADO.net,刚刚发现 SqlDataAdapter
class,我可以用它来提取包含 [=15] 的 DataTable
=].如果可能的话,我想以某种方式直接使用这个 DataColumnCollection
来定义一个新的 table,有点像这样:
DataTable dt = new DataTable("Table2", originalDataColumnCollection);
sqlDataAdapter.MakeTable(dt);
是否有 API 可以轻松实现此功能?我当前的方法涉及迭代 originalDataColumnCollection
以构建 create table Table2 (...)
字符串,然后通过 SqlCommand
.
提交
更新:
我刚刚注意到我无法从 originalDataColumnCollection
获取 SQL 类型,而是返回一个 C# 类型。也许这种方法根本无法确保相同的列结构?
您可以执行一个空的 select 命令并将其存储到一个新的 table 中,这样就可以使用与旧的 table 相同的模式创建一个 table 并且您以后可以用它做你想做的事。
select * into new_table from old_table where 1 = 0
执行此 sql 命令将创建一个空的 table,其架构与您想要的 table 相同。
我有一个带有任意模式的 table T1。我想用相同的架构创建第二个 table T2,然后将一些数据从 T1 移植到 T2。我可以很容易地手动创建 T2(具有相同的列名和类型),但这不是一个优雅的解决方案。
我刚开始使用 ADO.net,刚刚发现 SqlDataAdapter
class,我可以用它来提取包含 [=15] 的 DataTable
=].如果可能的话,我想以某种方式直接使用这个 DataColumnCollection
来定义一个新的 table,有点像这样:
DataTable dt = new DataTable("Table2", originalDataColumnCollection);
sqlDataAdapter.MakeTable(dt);
是否有 API 可以轻松实现此功能?我当前的方法涉及迭代 originalDataColumnCollection
以构建 create table Table2 (...)
字符串,然后通过 SqlCommand
.
更新:
我刚刚注意到我无法从 originalDataColumnCollection
获取 SQL 类型,而是返回一个 C# 类型。也许这种方法根本无法确保相同的列结构?
您可以执行一个空的 select 命令并将其存储到一个新的 table 中,这样就可以使用与旧的 table 相同的模式创建一个 table 并且您以后可以用它做你想做的事。
select * into new_table from old_table where 1 = 0
执行此 sql 命令将创建一个空的 table,其架构与您想要的 table 相同。