首页 产品介绍 购买方法 下载试用 服务与支持 联系我们 关于VKsoft  
 产品介绍
维克仓库管理软件
维克进销存管理软件
维克采购管理软件
维克销售管理软件
维克客户管理软件
维克生产管理软件
维克样品管理软件
维克设备管理软件
维克计量管理软件
维克固定资产管理软件
维克合同管理软件
维克人力资源管理软件
维克仪器客服管理软件
维克通信客服管理软件
维克空调客服管理软件
维克房地产中介管理软件
维克物业管理软件
维克人口信息管理软件
维克图书管理软件
维克餐饮娱乐管理软件
维克车辆管理软件
维克货运物流管理软件
维克档案管理软件
维克驾校学员管理软件

怎样用SQL语句在SQL Server和Excel及Access间交换数据



我们有时候需要在SQLServer和Access、Excel等数据存储文件间交换和传输数据,这其实在SQL Server中是一件非常简单的事情。

通常情况下,可以有3种方式:1、DTS工具 2、BCP 3、分布式查询


  DTS是图形化操作界面,很容易上手。这里主要讲下后面两种,分别以查询、插入、删除、更改作为简单的例子,下面直接以T-SQL的形式表现出来。


  一、SQLServer和Access


  1、在SQLServer中查询Access数据的方法:


select * from OpenRowSet('microsoft.jet.oledb.4.0',';database=c:\db2.mdb','select
* from table1)



select * from OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data Source="c:\DB2.mdb";User
ID=Admin;Password=')...table1


  2、从SQLServer向Access写数据:


insert into OpenRowSet('microsoft.jet.oledb.4.0',';database=c:\db2.mdb','select
* from Accee_table')

select * from SQLServer_table

或用BCP


master..xp_cmdshell'bcp "serv-htjs.dbo.table1" out "c:\db3.mdb" -c
-q -S"." -U"sa" -P"sa"'


  上面的区别主要是:OpenRowSet需要mdb和表存在,BCP会在不存在的时候生成该mdb


  3、从Access向SQLServer写数据:有了上面的基础,这个就很简单了


insert into SQLServer_table1 select * from

OpenRowSet('microsoft.jet.oledb.4.0',';database=c:\db2.mdb','select * from
Accee_table1')


或用BCP


master..xp_cmdshell'bcp "serv-htjs.dbo.table1" in "c:\db3.mdb" -c
-q -S"." -U"sa" -P"sa"'


  4、删除Access数据:


delete from OpenRowSet('microsoft.jet.oledb.4.0',';database=c:\db2.mdb','select
* from tabel1')

where lock=0


  5、修改Access数据:


update OpenRowSet('microsoft.jet.oledb.4.0',';database=c:\db2.mdb','select
* from table1')

set lock=1


SQLServer和Access大致就这么多。


  二、SQLServer和Excel



  1、向Excel查询


select * from OpenRowSet('microsoft.jet.oledb.4.0','Excel 8.0;HDR=yes;database=c:\book1.xls;','select
* from [Sheet1$]') where c like '%f%'


select * from

OPENROWSET('MICROSOFT.JET.OLEDB.4.0'

,'Excel 5.0;HDR=YES;IMEX=2;DATABASE=c:\book1.xls',[sheet1$])


1)hdr=yes时可以把xls的第1行作为字段看待,如第1个中hdr=no的话,where时就会报错

2)[]和美圆$必须要,否则M$可不认这个账


  2、修改Execl


update OpenRowSet('microsoft.jet.oledb.4.0','Excel 8.0;hdr=yes;database=c:\book1.xls;','select
* from [Sheet1$]')

set a='erquan' where c like '%f%'


  3、导入导出


insert into OpenRowSet('microsoft.jet.oledb.4.0','Excel 8.0;hdr=yes;database=c:\book1.xls;','select
* from [Sheet2$]')(id,name)

select id,name from table1


或BCP


master..xp_cmdshell'bcp "serv-htjs.dbo.table1" out "c:\book2.xls" -c
-q -S"." -U"sa" -P"sa"'


从Excel向SQLServer导入:


select * into table1_bak

from OpenRowSet('microsoft.jet.oledb.4.0','Excel 8.0;HDR=yes;database=c:\book1.xls;','select
* from [Sheet1$]')


  如果表table1_bak不存在,则创建


  有关BCP和分布式查询,您可以查SQLServer自带帮助。掌握了以上原理,你再进行SQLServer和txt文件、HTML文件、VFP文件的数据传输和交换都会很容易理解了。




服务器xxx上的MSDTC不可用解决办法
怎样用SQL语句在SQL Server和Excel及Access间交换数据
日期格式设置
msde2000数据库安装失败的解决方法,msde怎么安装
使用QQ进行远程协助
安装和使用SQL Server 2000
更多>>

© VKSOFT Last Update 2010-08-23 12:51:16