在SQL SERVER2005中OpenRowSet函数新增了Bulk功能,关于bulk的意义与用法,大家可以参考MSDN。这里我想讲一讲我在用OpenRowset的一点小问题。
假设有一张数据表 Demo ={ID,Photo,CreateTime};
最初sql 代码是这样写:
insert into demo (id,photo,createtime) select '0001',* from openrowset(bulk 'd:logo.jpg',signle_blob),'2008-11-10 23:12:12.000'
但是这段无法编译通过,提示'2008-11-10 23:12:12.000'错误,真让人百思不得其解!
于是上网search关于bulk、openrowset方面的资料,看了众多exam后,发现这些exam中的数据表都只有两个字段,而最后一个字段往往都是大数据类型字段,于是他们的exam一般是 insert into (row1,row2) select 'abc',* from openrowset(bulk 'd:logo.jpg',signle_blob),也就是说:openrowset这个函数应该放在最后,明白了这个道理,我将上述代码改成:
insert into demo (id,createtime,photo) select '0001','2008-11-10 23:12:12.000',* from openrowset(bulk 'd:logo.jpg',signle_blob)
OK,执行成功!
总结:
1. OpenRowSet放在最后;
2. 另外附三篇介绍bulk的文章:
- http://www.sqlteam.com/article/using-bulk-insert-to-load-a-text-file
- http://news.newhua.com/news1/program_database/2008/520/08520152710E9EC3FB5K481AF9292JBIEDJ16F35D7DG60340EB03HE3.html
- http://www.knowsky.com/339140.html