如何将任意DataTable保存到新的SQL表

时间:2009-05-21 09:38:38

标签: c# sql-server ado.net

假设我有一个ADO.NET DataTable,我通过将其保存到SQL Server数据库中的 new 表来“保持” - 是否有快速的方法这样做?

我意识到我可以编写为'CREATE TABLE'语句生成DDL的代码,方法是循环访问DataColumns集合并计算出正确的类型映射等等......但是我想知道是否存在一个现有方法这样做,还是有人写过的框架?

(注意:我需要能够处理任意列,没有像blob那样过于花哨;只需要常见的列类型,如字符串,数字,指南和日期。程序在运行之前不会知道DataTable中的列是什么 - 因此它们不能被硬编码。)

4 个答案:

答案 0 :(得分:3)

ADO.net无法直接在SQL Server中创建表,但是,SMO可以使用Table类的.Create方法执行此操作。不幸的是,没有内置的方法来使用DataTable来定义SMO Table对象。

幸运的是,Nick Tompson在2006年写了这样一个DataTable-to-SMO.Table例程。它是作为对这个MSDN论坛主题http://social.msdn.microsoft.com/forums/en-US/adodotnetdataproviders/thread/4929a0a8-0137-45f6-86e8-d11e220048c3/的回复之一发布的(编辑:我现在可以创建超链接)

另请注意,回复帖子显示了如何向其添加SQLBulkCopy。

答案 1 :(得分:1)

我认为post可以提供帮助

答案 2 :(得分:1)

如果表存在,您可以使用SqlBulkCopy(将接受DataTable)以最快的方式将数据放入表中(比通过适配器快得多)。我不认为它会创建表格。您可能必须自己编写DDL,或者找到一些现有代码来遍历DataTable.Columns来执行此操作。

答案 3 :(得分:0)

我可能更容易将您的DataTable存储为XML。只需创建一个包含XML列的表。