C# webService 批量导入sqlserver(导入临时表,再导入主表)

近期课题需要把 批量数据从Sqlite倒出发送到webservice 然后 用 存储过程 插入到sqlserver 考虑到wifi不稳定,效率问题,在网上查了一些资料,然后使用了下面的方法

首先,我传到webService的是一个数据的字符串,根据特定的符号进行切割,得到一条条数据,然后放到DataTable 里面,再用SqlBulkCopy 类来批量插入到sqlserver。
插入速度很快,网络好的话1.5W条数据用时也就10秒,非常满意。

这个方法唯一导致慢的地方就是传给webservice的问题,网路不好的话传输很慢,所以在使用这个机能的时候,我限制了信号强度,使之能更快,更安全的处理数据。

出现过一个问题,还没找到原因:
System.InvalidOperationException: 目的のテーブル 'Temp__172_17_3_157' にアクセスできません。 ---> System.Data.SqlClient.SqlException: タイムアウトに達しました。操作が完了する前にタイムアウト期間が過ぎたか、またはサーバーが応答していません。

说是 临时表**无法访问,一直没找到原因,初步分析是,临时表被占用,在整个流程处理结束需要删除临时表的时候,删除失败。 如果各位有解决方案不妨说下共同进步!


[quote]using (SqlBulkCopy bulk = new SqlBulkCopy(this.conn))
{
bulk.BulkCopyTimeout = 20; //插入超时
bulk.DestinationTableName = tableName;//目标表
bulk.ColumnMappings.Add("coloum1", "coloum1");//目标表的列名,与dt里的列名匹配,建议用一个名字
bulk.ColumnMappings.Add("coloum2", "coloum2");
...
bulk.ColumnMappings.Add("coloumN", "coloumN");
bulk.WriteToServer(datatable);//执行写入
}
if (bulk != null)
{
bulk.Close();
}
[/quote]
很简单,这里就写这么多,最后别忘记关闭资源
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值