本文转自:http://blog.sina.com.cn/s/blog_6399df820102vyy8.html
SQL SERVER中openrowset与opendatasource的区别:openrowset查询:okselect * from openrowset(‘Microsoft.Jet.OLEDB.4.0’, ‘Excel 5.0;Database=c:/test.xls;User ID=;Password=;’, ‘select * from [sheet1$]’) 或者:okselect * from openrowset(‘Microsoft.Jet.OLEDB.4.0’, ‘Excel 5.0;Database=c:/test.xls;User ID=;Password=;’, [sheet1$]) 插入:okinsert openrowset(‘Microsoft.Jet.OLEDB.4.0’, ‘Excel 5.0;Database=c:/test.xls;User ID=;Password=;’, ‘select * from [sheet1$]’) select ‘109’,’ccc’,’202′ 更新:okupdate openrowset(‘Microsoft.Jet.OLEDB.4.0’, ‘Excel 5.0;Database=c:/test.xls;User ID=;Password=;’, ‘select * from [sheet1$]’) set a2=’bbb’,a3=345 where a1= 101 删除:不支持 opendatasource查询:okSELECT * FROM OPENDATASOURCE(‘Microsoft.Jet.OLEDB.4.0’,’Data Source=”c:/test.xls”;Extended Properties=”Excel 8.0;HDR=yes;IMEX=2;”‘)…[sheet1$] 插入:okinsert OPENDATASOURCE(‘Microsoft.Jet.OLEDB.4.0’,’Data Source=c:/test.xls; Extended Properties=”Excel 8.0;HDR=yes;IMEX=2;”‘)…[sheet1$] select ‘102’,’ccc’,’202′ 更新:okupdate OPENDATASOURCE(‘Microsoft.Jet.OLEDB.4.0’,’Data Source=c:/test.xls;Extended Properties=”Excel 8.0;HDR=yes;IMEX=2;”‘)…[sheet1$] set a2=’ddd’,a3=’203′ where a2=’ccc’对数字字段不支持 删除:不支持 1.查询结果与EXCEL单元格的格式有很大关系;2.路径中的”/”和”\”意义相同;3.对于Excel里含有诸如’-‘之类的特殊字符的工作表,在OPENDATASOURCE中无论如何都无法支持,而openrowset则可解决这个问题 特别注意 Extended Properties=’Excel 8.0;HDR=yes;IMEX=1’A: HDR ( HeaDer Row )设置若指定值为Yes,代表 Excel 档中的工作表第一行是栏位名称若指定值為 No,代表 Excel 档中的工作表第一行就是資料了,沒有栏位名称 B:IMEX ( IMport EXport mode )设置 IMEX 有三种模式,各自引起的读写行为也不同,容後再述:0 is Export mode 为“汇出模式”,这个模式开启的 Excel 档案只能用来做“写入”用途。1 is Import mode 为“汇入模式”,这个模式开启的 Excel 档案只能用来做“读取”用途。2 is Linked mode (full update capabilities) 为“连結模式”,这个模式开启的 Excel 档案可同时支援“读取”与“写入”用途。