------------------------从Excel导入数据部分数据变成Null的问题。加了IMEX=1又报其它的错-----------------
用
SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0 ', 'Data Source= "C:\Documents and Settings\Administrator\桌面\aaa.xls ";User ID=Admin;Password=;Extended properties=Excel 5.0 ')...[sheet1$]
在查询分析器里面运行的时候,有些数据变为null值。
按照网上的提示加上“IMEX=1”这句话把所有字段当作Text类型来读。
SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0 ', 'Data Source= "C:\Documents and Settings\Administrator\桌面\aaa.xls ";User ID=Admin;Password=;Extended properties=Excel 5.0;IMEX=1 ')...[sheet1$]
一运行的话就抱错了。提示:
服务器: 消息 7399,级别 16,状态 1,行 3
OLE DB 提供程序 'Microsoft.Jet.OLEDB.4.0 ' 报错。
[OLE/DB provider returned message: 找不到可安装的 ISAM。]
OLE DB 错误跟踪[OLE/DB Provider 'Microsoft.Jet.OLEDB.4.0 ' IDBInitialize::Initialize returned 0x80004005: ]。
请问是什么问题呢?
------解决方案--------------------Extended properties= "Excel 5.0;IMEX=1 " ')...[sheet1$] 加双引号
------解决方案-------------------- select * from OPENROWSET( 'Microsoft.Jet.OLEDB.4.0 ', 'Excel 8.0;Database=C:\Documents and Settings\liang\桌面\test1.xls;IMEX=1 ', 'SELECT * FROM [sheet1$] ')
這個試試
------解决方案--------------------下面两种方式,都可以顺利读出数据:
1、
select *
from openrowset( 'Microsoft.Jet.OLEDB.4.0 ', 'EXCEL 8.0;HDR=YES;User id=admin;Password=;IMEX=1;DATABASE=D:\aa.xls ', [sheet1$])
2、
SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0 ', 'Data Source= "D:\aaa.xls ";User ID=;Password=;Extended properties= "Excel 5.0;IMEX=1 " ')...[sheet1$]
--注意:
"Excel 5.0;IMEX=1 "需要加双引号
------解决方案--------------------SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0 ', 'Data Source= "D:\aaa.xls ";User ID=;Password=;Extended properties= "Excel 5.0;IMEX=1;HDR=yes " ')...[sheet1$]
這裡的extended properties是作為擴充屬性,所以要擴起來.
另外,就算用imex=1,也不一定能讀出來,
原因好像是,在用oledb讀excel時,是按行數掃描(默認好像是8行),以掃描出的多的類型作為參考類型,妥一點的辦法是先設置excel所有的存儲格屬性為文字,再填入數據.(左上角有個小綠三角)
如果先添數據再改屬性是沒用的.