数据库是本地机的,导出文件也是本地机的我写的都对了但是放到公司,访问公司数据库都错了在面是我写的代码!
第一种:
SELECT * into gw.dbo.CS_ZXXX_BAK FROM OpenDataSource(
'Microsoft.Jet.OLEDB.4.0',
'Data Source="D:\aaa\abc.xls";
Extended properties=Excel 13.0')...Sheet1$
异常: 无法创建链接服务器 "(null)" 的 OLE DB 访问接口 "MSDASC" 的实例.
按照网上解决方法:将两个服务改成 LocalSystem 还是 不行
第二种:
INSERT INTO gw.dbo.CS_ZXXX_BAK SELECT * FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=D:\aaa\abc.xls',Sheet1$)
异常:尚未注册 OLE DB 访问接口 "Micorsoft.JET.OLEDB.4.0"。
期望高手解决啊!!
7 个解决方案
#1
数据库是 2008 的
#2
数据库是64位的吗? 64位已经没有JET Provider了。
http://blog.csdn.net/kevinsqlserver/article/details/7951434
http://blog.csdn.net/kevinsqlserver/article/details/7951434
#3
额,感谢 回复,吗如果不弄我上面的方法还有别的方法没了?就是实现 本地 和远程之间的数据导入导出!
#4
OpenDataSource好像只能是本地的数据才可以
#5
BCP 可以吗?
#6
貌似没有办法,只能用前台编程,不过我也么深入研究过
#7
如果你实在是不想装 ace 12.0的话,可以考虑先把xls的文件导出为txt的文本文件或csv的文件,然后把这个txt文件复制到远程服务器,然后运行下面的代码,就可以了,速度非常快:
--在远程服务器上,导出格式文件
exec xp_cmdshell 'bcp 数据库.dbo.表名 format nul -f c:\格式文件名.fmt -c -U用户名 -P密码 -S 服务器ip,端口'
--在远程服务器上运行
SELECT *
from
openrowset(bulk 'c:\文件名.csv', --要读取的文件路径和名称
formatfile='c:\格式文件名.fmt', --格式化文件的路径和名称
firstrow = 2, --要载入的第一行
--lastrow = 1000, --要载入的最后一行,此值必须大于firstrow
maxerrors = 10, --在加载失败之前加载操作中最大的错误数
errorfile ='c:\t_error.txt', --存放错误的文件
rows_per_batch = 10000 --每个批处理导入的行数
) as t
#1
数据库是 2008 的
#2
数据库是64位的吗? 64位已经没有JET Provider了。
http://blog.csdn.net/kevinsqlserver/article/details/7951434
http://blog.csdn.net/kevinsqlserver/article/details/7951434
#3
额,感谢 回复,吗如果不弄我上面的方法还有别的方法没了?就是实现 本地 和远程之间的数据导入导出!
#4
OpenDataSource好像只能是本地的数据才可以
#5
BCP 可以吗?
#6
貌似没有办法,只能用前台编程,不过我也么深入研究过
#7
如果你实在是不想装 ace 12.0的话,可以考虑先把xls的文件导出为txt的文本文件或csv的文件,然后把这个txt文件复制到远程服务器,然后运行下面的代码,就可以了,速度非常快:
--在远程服务器上,导出格式文件
exec xp_cmdshell 'bcp 数据库.dbo.表名 format nul -f c:\格式文件名.fmt -c -U用户名 -P密码 -S 服务器ip,端口'
--在远程服务器上运行
SELECT *
from
openrowset(bulk 'c:\文件名.csv', --要读取的文件路径和名称
formatfile='c:\格式文件名.fmt', --格式化文件的路径和名称
firstrow = 2, --要载入的第一行
--lastrow = 1000, --要载入的最后一行,此值必须大于firstrow
maxerrors = 10, --在加载失败之前加载操作中最大的错误数
errorfile ='c:\t_error.txt', --存放错误的文件
rows_per_batch = 10000 --每个批处理导入的行数
) as t