sql server 导入导出
我如何在本地上使用sql语句将服务器数据库的数据导出到本地机上的一个文件和将本地机的数据文件导入到远程服务器上!
数据库是本地机的,导出文件也是本地机的我写的都对了但是放到公司,访问公司数据库都错了在面是我写的代码!
第一种:
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"。
期望高手解决啊!!
------解决方案--------------------数据库是64位的吗? 64位已经没有JET Provider了。
http://blog.csdn.net/kevinsqlserver/article/details/7951434
------解决方案--------------------OpenDataSource好像只能是本地的数据才可以
------解决方案--------------------如果你实在是不想装 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