您好,欢迎访问一九零五行业门户网

SQL SERVER与ACCESS,EXCEL的数据转换

欢迎进入c/c++编程社区论坛,与200万技术人员互动交流 >>进入 熟悉sql server 2000的数据库管理员都知道,其dts可以进行数据的导入导出,其实,我们也可以使用transact-sql语句进行导入导出操作。在transact-sql语句中,我们主要使用opendatasource函数、ope
欢迎进入c/c++编程社区论坛,与200万技术人员互动交流 >>进入
    熟悉sql server 2000的数据库管理员都知道,其dts可以进行数据的导入导出,其实,我们也可以使用transact-sql语句进行导入导出操作。在transact-sql语句中,我们主要使用opendatasource函数、openrowset 函数,关于函数的详细说明,请参考sql联机帮助。利用下述方法,可以十分容易地实现sql server、access、excel数据转换,详细说明如下:
    一、sql server 和access的数据导入导出
    常规的数据导入导出:
    使用dts向导迁移你的access数据到sql server,你可以使用这些步骤:
    ○1在sql server企业管理器中的tools(工具)菜单上,选择data transformation
    ○2services(数据转换服务),然后选择  czdimport data(导入数据)。
    ○3在choose a data source(选择数据源)对话框中选择microsoft access as the source,然后键入你的.mdb数据库(.mdb文件扩展名)的文件名或通过浏览寻找该文件。
    ○4在choose a destination(选择目标)对话框中,选择microsoft ole db prov ider for sql server,选择数据库服务器,然后单击必要的验证方式。
    ○5在specify table copy(指定表格复制)或query(查询)对话框中,单击copy tables(复制表格)。
        ○6在select source tables(选择源表格)对话框中,单击select all(全部选定)。下一步,完成。
    transact-sql语句进行导入导出:
    1.在sql server里查询access数据:
    select *
    from opendatasource( 'microsoft.jet.oledb.4.0',
    'data source=c:\db.mdb;user id=admin;password=')...表名
    2.将access导入sql server
    在sql server 里运行:
    select *
    into newtable
    from opendatasource ('microsoft.jet.oledb.4.0',
          'data source=c:\db.mdb;user id=admin;password=' )...表名
    3.将sql server表里的数据插入到access表中
    在sql server 里运行:
    insert into opendatasource( 'microsoft.jet.oledb.4.0',
      'data source= c:\db.mdb;user id=admin;password=')...表名
    (列名1,列名2)
    select 列名1,列名2  from  sql表
    实例:
    insert into  openrowset('microsoft.jet.oledb.4.0',
       'c:\db.mdb';'admin';'', test)
    select id,name from test
insert into openrowset('microsoft.jet.oledb.4.0', 'c:\trade.mdb'; 'admin'; '', 表名)
    select *
    from sqltablename
    二、sql server 和excel的数据导入导出
    1、在sql server里查询excel数据:
    select *
    from opendatasource( 'microsoft.jet.oledb.4.0',
    'data source=c:\book1.xls;user id=admin;password=;extended properties=excel 5.0')...[sheet1$]
    下面是个查询的示例,它通过用于 jet 的 ole db 提供程序查询 excel 电子表格。
    select *
    from opendatasource ( 'microsoft.jet.oledb.4.0',
      'data source=c:\finance\account.xls;user id=admin;password=;extended properties=excel 5.0')...xactions
    2、将excel的数据导入sql server :
    select * into newtable
    from opendatasource( 'microsoft.jet.oledb.4.0',
      'data source=c:\book1.xls;user id=admin;password=;extended properties=excel 5.0')...[sheet1$]
    实例:
    select * into newtable
    from opendatasource( 'microsoft.jet.oledb.4.0',
      'data source=c:\finance\account.xls;user id=admin;password=;extended properties=excel 5.0')...xactions
    3、将sql server中查询到的数据导成一个excel文件
    t-sql代码:
    exec master..xp_cmdshell 'bcp 库名.dbo.表名out c:\temp.xls -c -q -sservername -usa -p'
    参数:s 是sql服务器名;u是用户;p是密码
    说明:还可以导出文本文件等多种格式
    实例:exec master..xp_cmdshell 'bcp saletesttmp.dbo.cusaccount out c:\temp1.xls -c -q -spmserver -usa -psa'
    exec master..xp_cmdshell 'bcp select au_fname, au_lname from pubs..authors order by au_lname queryout c:\ authors.xls -c -sservername -usa -ppassword'
    在vb6中应用ado导出excel文件代码:
    dim cn  as new adodb.connection
    cn.open driver={sql server};server=websvr;database=webmis;uid=sa;wd=123;
    cn.execute master..xp_cmdshell 'bcp select col1, col2 from 库名.dbo.表名 queryout e:\dt.xls -c -sservername -usa -ppassword'
4、在sql server里往excel插入数据:
    insert into opendatasource( 'microsoft.jet.oledb.4.0',
    'data source=c:\temp.xls;user id=admin;password=;extended properties=excel 5.0')...table1 (a1,a2,a3) values (1,2,3)
    t-sql代码:
    insert into
    opendatasource('microsoft.jet.oledb.4.0',
    'extended properties=excel 8.0;data source=c:\training\inventur.xls')...[filiale1$]
    (bestand, produkt) values (20, 'test')
    总结:利用以上语句,我们可以方便地将sql server、access和excel电子表格软件中的数据进行转换,为我们提供了极大方便!
其它类似信息

推荐信息