奇趣技术网 收藏本站
设为主页
商务合作
首页 新闻中心 行业动态 软件新闻 安全资讯 病毒预警 漏洞发布 操作系统 Dos Win9x Win2000 WinXP Win2003 WinVista Linux Unix
数据库 DB2 Access MSSQL MySQL Oracle Sybase 编程技术 ASP PHP JSP CGI/Perl XML .Net C/C++/C# VB VC Delphi Java 汇编
安全技术 安全教学 工具介绍 漏洞利用 病毒防范 入侵检测 防火墙 安全防范 汉化破解 攻击实例 加密解密 技术论坛
中华网络安全联盟 >> 数据库 >> Access >> SQLServer和Access、Excel数据传输简单总结
数据库
Access
SQL Server
MySQL
DB2
Oracle
Sybase
  • scsiaccess - scsiacc

  • msaccess - msaccess.

  • mediaaccess - mediaa

  • access - access.exe 

  • instantaccess - inst

  • access数据库跨文件查

  • Access的跨库查询

  • Sun Java System Acce

  •   
    SQLServer和Access、Excel数据传输简单总结
    字体:

    中华网络安全联盟    作者:佚名    来源:网络转载    时间:2006-3-23

    所谓的数据传输,其实是指SQLServer访问Access、Excel间的数据。为什么要考虑到这个问题呢?由于历史的原因,客户以前的数据很多都是在存入在文本数据库中,如Acess、Excel、Foxpro。现在系统升级及数据库服务器如SQLServer、ORACLE后,经常需要访问文本数据库中的数据,所以就会产生这样的需求。前段时间出差的项目,就是面临这样的一个问题:SQLServer和VFP之间的数据交换。

    要完成标题的需要,在SQLServer中是一件非常简单的事情。通常的可以有3种方式:1、DTS工具 2、BCP 3、分布式查询DTS就不需要说了,因为那是图形化操作界面,很容易上手。这里主要讲下后面两们,分别以查、增、删、改作为简单的例子:

    直接以T-SQL的形式表现出来。

    一、SQLServer和Access

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

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

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

    2、从SQLServer向Access写数据:

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

    select * from SQLServer表

    或用BCPmaster..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 serv_user')

    where lock=0

    5、修改Access数据

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

    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 serv_user

    或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$]')

    如果表serv_user_bak不存在,则创建有关BCP和分布式查询的详细解答,就查SQLServer自带的帮助吧。SQLServer和txt文件、HTML文件、VFP文件的数据交换都显得非常容易了。

    其实这些内容在帮助里都有,总结了一下,方便大家参考。以上内容都经过测试。



    字体:
     
    设为主页 收藏本站 联系我们 友情连接 商务合作 网友留言
    Copyright©2006-2008 中华网络安全联盟 All rights reserved.