数据库:SQL
1、小数据直接粘贴
2、用导入向导
3、用SSIS包
4、用SQL语句
现在详细说一下第4种方法,以.xlsx文件为例
.xlsx文件需要用provider“Microsoft.ACE.OLEDB.12.0”读取,.xls文件需要Microsoft.ACE.OLEDB.4.0,所以需要先检查是否在SQL注册此Provider
具体查看位置为:打开SQL Management Studio->SQL Servers->Linked Servers->Providers
如果没有,需要下载64位引擎安装 http://www.microsoft.com/zh-CN/download/details.aspx?id=13255
Tip:64位系统中,如果是安装了32位的office 产品(如07版),需要先卸载全部32位产品,才可以安装。而且64位系统中安装了07版office,安装那个没有x64的引擎可以成功,但没有找到4.0Provider。
彻底卸载32位office产品:
1、控制面板卸载全部Microsoft Office程序
2、打开http://support.microsoft.com/kb/290301/zh-cn ,点击运行,将检测到的Microsoft Office程序卸载
3、清除注册表:运行输入regedit,进入到HKEY_CLASSES_ROOT\Installer\Products ,删除所有0000510开头(win8),00004,00002(win7)开头的项
开启导入功能:
exec sp_configure 'show advanced options',1 reconfigure exec sp_configure 'Ad Hoc Distributed Queries',1 reconfigure
允许在进程中使用ACE.OLEDB.12,允许动态参数
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1 EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1
调用代码:
select * from OpenRowSet('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;HDR=Yes;IMEX=1;Database=D:\Book1.xlsx', 'select * from [Sheet1$]')