SQL SERVER使用OpenRowset,、OpenDataSource函數(shù)導(dǎo)入、導(dǎo)出數(shù)據(jù)到Excel 的幾種方法(整理)
?一、如我在D盤下有D:/物件編碼.xls文件,有工作表名Sheet是中文命名為‘辦公用品編碼’,‘零件編碼’。
?????? select * into #temp??from opendatasource('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=D:/物件編碼.xls')...[辦公用品編碼$]
?????? select * into #temp??from opendatasource('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=D:/物件編碼.xls')...[零件編碼$]
二、如你的Excel文件是工作表是默認(rèn)的Sheet命名為Sheet1,Sheet2等。
????? select * into #temp??from opendatasource('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=D:/物件編碼.xls')...[Sheet1$]
????? select * into #temp??from opendatasource('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=D:/物件編碼.xls')...[Sheet2$]
三、引用 Limpire (昨夜小樓)以下方法,也行
????? OpenRowSet和OpenDataSource都能用讀取用數(shù)字命名的Sheet,只不過要加單引號界定,其它不規(guī)則命名的Sheet也一樣。
假設(shè)C:/Text.xls有個(gè)Sheet名字是“3”:?
?????? select * from opendatasource('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=C:/Test.xls')...['3$']
--OR
select * from openrowset('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=C:/Test.xls',['3$'])
--OR
select * from openrowset('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=C:/Test.xls','select * from [''3$'']')
--OpenRowSet(,,'query')可以不加單引號界定:
select * from openrowset('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=C:/Test.xls','select * from [3$]')
四、本人的方法:
導(dǎo)出EXCEL時(shí),對應(yīng)字段數(shù)類型都要相同,EXCEL字段的名稱stano,sname 和數(shù)據(jù)庫的要一樣,才能導(dǎo)出成功。
insert into openrowset('MICROSOFT.JET.OLEDB.4.0','excel 8.0;
HDR=YES;database=D:/FName.xls',sheet1$)
?select stano,sname from stainfo
以上在SQL SERVER2000上測試均可以運(yùn)行,是在本地查詢分析器中調(diào)試。