Sql Server与Access、Excel之间的数据传输

来源:互联网 发布:淘宝店铺名字截图 编辑:程序博客网 时间:2024/05/01 16:24

文章来源:http://blog.csdn.net/ba5590484/archive/2005/01/29/273488.aspx

一、SQLServer和Access
1、查询Access中数据的方法:
select * from OpenRowSet( 'microsoft.jet.oledb.4.0',';database=c:/db2.mdb','select * from Access表' )

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

2、从SQLServer向Access写数据:
insert into OpenRowSet('microsoft.jet.oledb.4.0',';database=c:/db2.mdb','select * from Accee表')
select * from SQLServer表
或用BCP
master..xp_cmdshell'bcp "serv-htjs.dbo.serv_user" out  "c:/db3.mdb" -c -q -S"." -U"sa" -P"sa"'

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

3、从Access向SQLServer写数据:有了上面的基础,这个就很简单了
insert into SQLServer表 select * from
OpenRowSet('microsoft.jet.oledb.4.0',';database=c:/db2.mdb','select * from Accee表')
或用BCP
master..xp_cmdshell'bcp "serv-htjs.dbo.serv_user" 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 Access表')
where 条件

5 修改Access数据:
update OpenRowSet('microsoft.jet.oledb.4.0',';database=c:/db2.mdb','select * from Access表'')
set  列名=列值
where 条件

二 Sql Server与Excel 
[注意:一般要关闭Excel,以免发生不必要的错误信息]
 1、向Excel查询
select * from OpenRowSet('microsoft.jet.oledb.4.0','Excel 8.0;HDR=yes;database=c:/book1.xls;','select * from [Sheet1$]')
where 条件

select * from
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel 5.0;HDR=YES;IMEX=2;DATABASE=c:/book1.xls',[sheet1$])  where 条件
注意:
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 列名= 列值
where 条件

3、导入导出
从SqlServer导入Excel
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 SqlServer表
或BCP
master..xp_cmdshell'bcp "serv-htjs.dbo.serv_user" out  "c:/book2.xls" -c -q -S"." -U"sa" -P"sa"'

从Excel向SQLServer导入:
select * into serv_user_bak
from OpenRowSet('microsoft.jet.oledb.4.0','Excel 8.0;HDR=yes;database=c:/book1.xls;','select * from [Sheet1$]')

三 SqlServer与文本文件的导入导出 
1 SqlServer数据导出到文本文件:
EXEC master..xp_cmdshell 'bcp "dbName..TableName" out c:/DT.txt -c -S"Server名" -U"用户" -P"密码"'   --双引号可以去掉
比如下面实际例子:
EXEC master..xp_cmdshell 'bcp MyTest..AS400 out c:/DT.txt -c -S172.16.3.60 -Usa -Pzhangzs'
2 文本数据导进SqlServer中。
EXEC master..xp_cmdshell 'bcp "dbName..TableName" in c:/DT.txt -c -Sserver名 -U用户 -P密码'     ---注意要事先有表存在,且列数一致
比如下面实际例子:
EXEC master..xp_cmdshell 'bcp "MyTest..AS400" in c:/DT.txt -c -S172.16.3.60 -Usa -Pzhangzs'


文章来源于 http://www.cnblogs.com/zhangzs8896 版权归原作者所有