當涉及空列時,我遇到了使用SqlBulkCopy的問題。這聽起來像SqlBulkCopy不知道如何處理可空列,並在遇到長度爲零的列時拋出非法大小的錯誤。錯誤是「從bcp客戶端收到一個無效的列長度...」如何在可空列中使用SqlBulkCopy
我想知道處理這個問題的最佳做法是什麼。 This似乎是一個很好的論壇帖子,描述了這個問題以及如何解決它讀取csv文件。
我認爲我的情況相當A - 典型和簡單。我需要將一個未知數據從一個數據庫表移動到另一個數據庫。對我來說,更簡單的答案是在SQL Server中使用SSIS/DTS或鏈接服務器,但客戶希望應用程序執行數據移動。
是否有一個已知的解決方案,爲這個或更好的蒸汽解決方案移動具有空字段的數據?
//access db
string src_db = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\SourceDB.mdb;Jet OLEDB ";
//sql db
string dest_db = @"Data Source=.\TEST;Initial Catalog=testdb;User Id=user;Password=password;";
string sql = "";
OleDbConnection sdb = new OleDbConnection(src_db);
OleDbCommand cmd = new OleDbCommand(sql, sdb);
OleDbDataReader rs = null;
SqlConnection db = new SqlConnection(dest_db);
SqlCommand clear = null;
SqlBulkCopy bulk_load = null;
// Read in the source table
sql = "select * from someTable";
sdb.Open();
cmd = new OleDbCommand(sql, sdb);
rs = cmd.ExecuteReader();
// Import into the destination table
bulk_load = new SqlBulkCopy(db);
bulk_load.DestinationTableName = "test";
bulk_load.WriteToServer(rs);
該列在數據庫中標記爲空。以上是在此表上執行的代碼。 – Chad 2009-10-28 15:41:05