作者diamondking (天剑流星)
看板C_Sharp
标题Re: [问题] datatable一次写入资料库
时间Sat Mar 24 03:03:37 2007
※ 引述《tomex (Tomex Ou)》之铭言:
: ※ 引述《qweqweqweqwe (啪)》之铭言:
: : 请问有这种方法吗
: : 现在我有一个datatable
: : 能一次把全部都insert进sqlserver吗
: : 还是只能一个一个row用回圈慢慢的放进去?
: 要一次insert很多笔,前阵子我也研究过这方面
: 首先,每个insert语法串起来,用「;」隔开是ok的
: 但好像写法上杂了一点,而且sqlserver都有总字串大小的限制
: 因此我在sql语法上查到sql server有支援一个"Bulk Insert"的语法
: 但这个语法必须具有admin身份才能执行,而且吃的资料来源是文字档,
: 也绑着sqlserver,不灵活。
: 我也发现DataAdapter中有支援BatchUpdate的语法
: 但它看起来是少送给server n次的insert指令
: 其实在sql server上,它本质上还是用分号隔开的sql的效能相同
: 还不如乾脆分号串起来一次送 (if总字量不过很大的话)
: 微软真正建议要大量insert的话,是透过dts或bcp等外挂程式
: 其中网友认为bcp程式是效能最好的。
: 综合以上,假如你insert的笔数在千笔以下,乾脆分号串起来比较快
: 万笔以上的话,就用bcp较好。
: 我研究过这些方式都不够让我觉得灵活及轻巧
: 所以还是先等等,等微软做出更好的东西罗!
我的看法也差不多…
当一定要用程式做即时的大批insert时,
用分号串起来送应该是唯一的方法,
另外如果笔数真的太多,建议可以用回圈,
串100笔insert送一次,并commit一次。
例如1000笔资料,就是分10次送完。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.115.158.121