2012-01-18 42 views
3

所有,如何使用BulkCopy而不定義目標表

我有以下BulkCopy操作:

// Convert the FlexGrid to a DataTable. 
DataTable currData = (DataTable)c1ErrFlexGrid.DataSource; 

// Insert the data into the database. 
SqlBulkCopy SqlBulkIns = new SqlBulkCopy(strConnString, SqlBulkCopyOptions.Default); 
SqlBulkIns.BatchSize = 5000; 
SqlBulkIns.DestinationTableName = String.Format("dbo.{0}", strTableName); 
SqlBulkIns.WriteToServer(currData); 

其中strConnectionString是定義和有效的連接字符串。過去,當表strTableName存在並且字段已定義時,此工作正常。我現在希望在運行時定義的DataTable上執行BulkCopy操作;也就是說,沒有在SQL中預定義表結構。這可能嗎?如果是這樣,怎麼樣?

謝謝你的時間。

+1

你的意思是你想創建一個表並從數據表中批量加載數據到數據表中嗎? (即表中不存在sql服務器)? – 2012-01-18 16:24:38

+0

你的意思是,你想問用戶一個表名,你的程序實際上會創建一個與'c1ErrFlexGrid.DataSource'具有相同模式的表,然後填充它嗎? – dsolimano 2012-01-18 16:25:43

+0

是的,你們都是對的......如果表格存在於SQL Server中,則上述代碼有效。我想知道如何在表中當前不存在的情況下將'DataTable'批量加載到SQL Server中,而無需預先定義它。 – MoonKnight 2012-01-18 16:26:48

回答

8

您可以使用此SqlTableCreator對象從您的數據表中創建一個SQL表,然後運行批量插入。

+0

不錯的圖書館!是會建議(基本上)編碼。 +1爲懶惰。 – 2012-01-20 20:56:06

+0

+1這實際上是我最終做的。 5天來不及,但一個偉大的發現!謝謝你的幫助! – MoonKnight 2012-01-23 10:31:02

+0

如果DBF文件不斷變化怎麼辦?我想在寫入之前即時創建表格。 – Si8 2014-06-04 20:13:54

相關問題