用C#的SqlBulkCopy类方法向SQLServer2016写入数据,但数据排列混乱

yizhidani 2016-09-08 11:02:20
操作目的是将datatable的数据输入到数据库表中的固定两列


using (SqlBulkCopy bcp = new SqlBulkCopy(connString))
{
bcp.BatchSize = 100;//每次传输的行数
bcp.NotifyAfter = 100;//进度提示的行数
bcp.DestinationTableName = sheetName;//目标表
//根据excel表中数据进行定位,并将数据插入具体列
foreach (DataColumn dc in excel.Columns)
{
if (dc.DataType == typeof(DateTime))
{
bcp.ColumnMappings.Add(dc.ColumnName, "time2");
}
else if (dc.DataType == typeof(Double))
{
bcp.ColumnMappings.Add(dc.ColumnName, "pload2");
}
}
//插入数据
bcp.WriteToServerAsync(excel);
}

用上述语句可以实现向固定列进行数据插入,但插入后数据并不是按照原有的excel表顺序排列,请问大家有什么好办法么?
...全文
903 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
吉普赛的歌 2019-01-23
  • 打赏
  • 举报
回复
单步跟踪一下, 看看 datatable 中的顺序是否与 excel 中的一致?
zjcxc 2019-01-23
  • 打赏
  • 举报
回复
数据存储顺序并不取决于插入的顺序,存储的顺序也不等同于读取的顺序,如果你需要顺序,必须 明确在查询的时候使用 ORDER BY
Il Mare 2019-01-23
  • 打赏
  • 举报
回复
引用 4 楼 吉普赛的歌 的回复:
单步跟踪一下, 看看 datatable 中的顺序是否与 excel 中的一致?

同问,我遇到了同样的问题,导入数据库之后顺序不同了,而且都是从第329行开始出错。但是并不是每次导入都会出错,有时好有时坏...
shoppo0505 2016-09-09
  • 打赏
  • 举报
回复
你这个是多核CPU的数据库吧?可以限制单核运行,但是性能会变差。 你可以给数据行编号,输入数据库以后,再排序。

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧