C# 大容量复制到 SQL 表类型问题
本文关键字:类型 问题 SQL 大容量 复制 | 更新日期: 2023-09-27 18:32:36
Using C#, .net 4, Visual Studio 2010, and SQL Server 2008.
我目前有一个名为NewPeriodPareto
的表,其中包含以下列:
- PG nvarchar(50(
- 零件(50(
- 销售浮动
- 损失销售浮动
- Pareto6 int
- P6 图片
- Pareto5 int
- P5 图像
- Pareto4 int
- P4 图片
- Pareto3 int
- P3 图像
- 当前帕累托 int
- p新图像
- NewPareto int
以下是我尝试填充表格的代码:
private void CreateNewPeriod()
{
DataSet dsDG = new DataSet();
DataTable dt = new DataTable();
dsDG = (DataSet)ParetoGrid.DataSource;
dt = dsDG.Tables[0];
string ThetableName = "NewPeriodPareto";
BulkInsertDataTable(myConn, ThetableName, dt);
}
public static void BulkInsertDataTable(string connectionString, string tableName, DataTable table)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlBulkCopy bulkCopy =
new SqlBulkCopy
(
connection,
SqlBulkCopyOptions.TableLock |
SqlBulkCopyOptions.FireTriggers |
SqlBulkCopyOptions.UseInternalTransaction,
null
);
bulkCopy.DestinationTableName = tableName;
connection.Open();
bulkCopy.WriteToServer(table);
connection.Close();
}
}
如您所见,提供的代码尝试从我的数据表中复制数据。数据表绑定到"我的数据网格"源。
以下是我得到的错误:
@bulkCopy.写入服务器(表(;
数据源中 Int32 类型的给定值无法转换为 键入指定目标列的图像。
现在我想的第一件事是我的SQL表的一个字段中有一个类型集错误,但是经过多次检查,似乎没有任何问题。
所以我所追求的是这个小问题的解决方案,甚至是实现相同目标的替代/更简单的方法,即从程序数据表中填充SQL表。
[时间紧迫,所以我要给你一个提示]
您应该查看 SqlBulkCopy 的 ColumnMappings。这允许您将源的列显式映射到目标。现在可能有一些额外的列,如 ID 或类似列。