如何实现将客户端的Excel,或Access文件导入到服务器中的MSSQL中?
请问各位大虾如何才能实现将客户端的Excel,或Access文件导入到服务器中的MSSQL中?
非常急啊!
排除采用上传文件的方式!
------解决方案--------------------方法很多,主要用到两种
1. SQL2000用企业管理器中的DTS, SQL2005中用 Integration Services (SSIS)
2. 使用命令 Opendatasource或OPENROWSET等
--导Access
SELECT a.* into 新表名 FROM opendatasource( 'Microsoft.Jet.OLEDB.4.0 ',
'Data Source= "d:\dd.mdb ";Jet OLEDB:Database Password=test ')...tb AS a
--有用户密码+数据库密码可以这样写
SELECT a.* into 新表名
FROM opendatasource( 'Microsoft.Jet.OLEDB.4.0 ',
'Data Source= "c:\SDV50.mdb ";user id= "admin ";password= " ";
Jet OLEDB:Database Password=BESTSOFT99 ')...storeall AS a
--导Excel
Select * into 新表名 from OPENROWSET( 'MICROSOFT.JET.OLEDB.4.0 ' , 'Excel 8.0;HDR=YES;
DATABASE=D:\Excel.xls ', Excel$ )
------解决方案--------------------映射一下共享目录试试。
或者用程序将MDB文件上传到服务器指定的目录中。
------解决方案--------------------不是在每台客户端都安装MSSQL.
当使用远程服务器上的异源数据时,必须使用异源数据的网络路径,即:
\\网络名\共享名\文件名
以EXECL为例:
假设IP地址为192.168.16.166的远程客户端的D盘的test文件夹下有一个EXECL文件Books1.xls,
本机IP地址为192.168.16.2,要读取该远程Books1.xls文件到本机的SQLSERVER中,则可
这样做:
第一步:将192.168.16.166远程客户端的D:\test文件夹设置为共享,共享名为test;
第二步:修改192.168.16.166远程客户端的WINDOWS防火墙设置,在 <例外> 中允许 <文件和打印机共享> ;
第三步:设置网络文件路径:
方法1:右键点击我的电脑-> 映射网络驱动器,假设网络驱动器为Z,映射路径为该远程客户端
的D:\test文件夹,然后这样进行查询:
SELECT * FROM OPENDATASOURCE( 'Microsoft.Jet.OLEDB.4.0 ',
'Data Source=z:\book1.xls;Extended Properties=Excel 8.0 ')...[Sheet1$]
动态SQL:
declare @sql varchar(1000),@NetPathFile varchar(100)
set @NetPathFile = 'z:\book1.xls '
set @sql =
'SELECT * FROM OPENDATASOURCE( ' 'Microsoft.Jet.OLEDB.4.0 ' ',
' 'Data Source= ' + @NetPathFile + ';Extended Properties=Excel 8.0 ' ')...[Sheet1$] '
EXEC(@sql)
方法2:直接使用计算机名或远程计算机的IP:
SELECT * FROM OPENDATASOURCE( 'Microsoft.Jet.OLEDB.4.0 ',
'Data Source=\\192.168.16.166\test\book1.xls;Extended Properties=Excel 8.0 ')...[Sheet1$]
动态SQL:
declare @sql varchar(1000),@NetPathFile varchar(100)
set @NetPathFile = '\\192.168.16.166\test\book1.xls '
set @sql =
'SELECT * FROM OPENDATASOURCE( ' 'Microsoft.Jet.OLEDB.4.0 ' ',
' 'Data Source= ' + @NetPathFile + ';Extended Properties=Excel 8.0 ' ')...[Sheet1$] '
EXEC(@sql)
以上在本机测试通过.测试环境:
简体中文WindowsServer2003sp1 + 简体中文SQLSERVER2000sp4 + 局域网