【问题标题】:Concise/elegant method for duplicating a table's schema?复制表模式的简洁/优雅方法?
【发布时间】:2015-01-09 23:30:55
【问题描述】:

我有一个带有任意模式的表 T1。我想用相同的模式创建第二个表 T2,然后将一些数据从 T1 移植到 T2。我可以很容易地手动创建 T2(具有相同的列名和类型),但这不是一个优雅的解决方案。

我是使用 ADO.net 的新手,刚刚发现了 SqlDataAdapter 类,我可以使用它来提取包含 DataColumnCollectionDataTable。如果可能的话,我想以某种方式直接使用这个DataColumnCollection 来定义一个新表,有点像这样:

DataTable dt = new DataTable("Table2", originalDataColumnCollection);
sqlDataAdapter.MakeTable(dt);

是否有 API 可以轻松实现这一点?我当前的方法涉及迭代originalDataColumnCollection 以构建create table Table2 (...) 字符串,然后通过SqlCommand 提交。

更新:

我刚刚注意到我无法从 originalDataColumnCollection 获取 SQL 类型,而是 if 给了我一个 C# 类型。也许这种方法根本无法确保相同的列结构?

【问题讨论】:

  • select * from old_table into new_table where(你要导入的行)
  • @dotctor 我不想复制行(但是;我需要做一些客户端处理)。我正在尝试创建一个具有相同列名和类型的新(空)表。

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


【解决方案1】:

您可以执行一个空的选择命令并将其存储到一个新表中,以便创建一个与旧表具有相同架构的表,您可以稍后使用它做您想做的事情。

select * into new_table from old_table where 1 = 0

执行此 sql 命令将创建一个与您想要的表具有相同架构的空表。

【讨论】:

  • 酷;我不知道你可以这样创建一个表。但是,当我尝试运行它时,出现“靠近关键字 'into'”的语法错误。
  • 我觉得应该是select * into new_table from old_table where 1 = 0
  • 谢谢,睡一觉吧! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-15
  • 1970-01-01
  • 2022-01-22
  • 2015-05-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多