我使用 SqlBulkCopy 将数据从 OleDbDataReader(包含来自 xls 的数据)插入到 mssql-2005 我在 OleDbDataReader 上有一个 cloumn,其中包含存储为文本的数字(在 xls 中)
当我查看 mssql 数据时,我在该列中看到 null,所有其他列都可以移动。
我使用 SqlBulkCopy 将数据从 OleDbDataReader(包含来自 xls 的数据)插入到 mssql-2005 我在 OleDbDataReader 上有一个 cloumn,其中包含存储为文本的数字(在 xls 中)
当我查看 mssql 数据时,我在该列中看到 null,所有其他列都可以移动。
您需要像代码中那样映射列...
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(destConnection))
{
bulkCopy.ColumnMappings.Add("ID", "ID");
bulkCopy.ColumnMappings.Add("Email", "Email");
bulkCopy.DestinationTableName = "tableName";
bulkCopy.WriteToServer(ExcelReader);
}
当从 SQL Server 批量复制到 SQL Server 时,源能够很好地向目标指示数据类型。使用 Excel,来源会猜测数据类型。您可能将 Excel 格式化为文本,但源(ODBC?)可能会查看前 50 行并猜测它是数字数据类型。即使列名匹配,如果数据类型不同,我怀疑该列没有被填充。