xp系统里,excel表格怎样导入sql 2005数据库某个表,XP系统安装的是sql 2005开发版,请教各位大虾,谢谢!

解决方案 »

  1.   

    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 -S"servername" -U"sa" -P""'
    参数:S 是SQL服务器名;U是用户;P是密码
    说明:还可以导出文本文件等多种格式
    实例:EXEC master..xp_cmdshell 'bcp saletesttmp.dbo.CusAccount out c:\temp1.xls -c -q -S"pmserver" -U"sa" -P"sa"'
    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')  
      

  2.   

    应该是从2005将输入导入excel.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 -S"servername" -U"sa" -P""'
    参数:S 是SQL服务器名;U是用户;P是密码
    说明:还可以导出文本文件等多种格式
    实例:EXEC master..xp_cmdshell 'bcp saletesttmp.dbo.CusAccount out c:\temp1.xls -c -q -S"pmserver" -U"sa" -P"sa"'
    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')  
      

  3.   

    提示这个错误“无法初始化链接服务器 null 的 ole db 访问接口 microsoft.jet.oledb.4.0 的数据源对象。”咋解决,在GOOGLE搜索了下,问题也解决不好,再请教下,谢谢!
      

  4.   

    查询语句是这样的“
    select * into tt
    from opendatasource('microsoft.jet.oledb.4.0',
       'data source="d:\01.xls";user id=admin; password=;extemded properties=excel 8.0')...[sheet1$]
      

  5.   

    0)SELECT * 
    FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
    'Data Source="D:\Test0310\Student.xls";User ID=Admin;Password=;Extended properties=Excel 8.0')...[Sheet1$]1)这里是Extended
    不是 extemdedOR2)
    SELECT *  FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
        'Excel 8.0;Database=D:\Test0310\Student.xls;HDR=YES', 
        'SELECT * FROM [Sheet1$]')
      

  6.   

    8楼的兄弟,再向你请教个问题,比如我想把你student.xls Excel表格插入Tel数据库中的Tt表,该怎样写呢,我试了2楼大哥教给我的方法也是导入不成功(提示这个错误“无法初始化链接服务器 null 的 ole db 访问接口 microsoft.jet.oledb.4.0 的数据源对象。”),也试了用ssis导入,也不行,导入的数据是空的。是不是xp系统不支持导入excel表格。谢谢,在线等
      

  7.   

    通过导入导出向导或用openrowset
      

  8.   

    10楼的兄弟,通过导入导出向导来做的话通入的表是个空表,无内容,但是在SERVER 2003导入的表是完整的。所以我纳闷了,是不是XP系统不支持导入导出EXCEL表格呢
      

  9.   

    0)打开Ad Hoc Distributed Queries了? 0.1)SQL Server Surface Area Configuration里亦可开启,此略.0.2)
    exec sp_configure 'show advanced options',1 
    reconfigure 
    exec sp_configure 'Ad Hoc Distributed Queries',1 
    reconfigure1) 你用预览语句,看是否有数据显示的是否有问题.SELECT *  FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
        'Excel 8.0;Database=D:\Test0310\Student.xls;HDR=YES', 
        'SELECT * FROM [Sheet1$]')再改成,tbl_test要先存在.INSERT INTO tbl_test
    SELECT *  FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
        'Excel 8.0;Database=D:\Test0310\Student.xls;HDR=YES', 
        'SELECT * FROM [Sheet1$]')2)SSIS的方式, 你在Data Flow(数据流)里定义Excel Source(Excel源)后 Preview(预览)数据怎样?
    其实这种方式的底层一样是OPENROWSET.
      

  10.   

    12楼的兄弟,不好意思再麻烦你一下,能否在QQ上请教你下。01.xls工作表下有三个表格,[Sheet2$]和[Sheet3$]都能正常插入test表格(test表格是我定义在sql 2005数据库中的某个表),但[Sheet1$]却无法导入,提示“插入错误: 列名或所提供值的数目与表定义不匹配。”我用预览语句查询[Sheet1$],数据显示是没有问题的。但就是不好导入。下面是我定义三个表格的内容。
    sheet1                            sheet2                  sheet3
    a  b  c  d                      a  b  c  d              a  b  c  d 
    2  3  4  5                      2  3  4  5              4  5  6  7
    4  5  6  7                      5  6  78  8             7  8  9  0
      

  11.   

    呵呵,把表结构和EXCEL源数据等发到如下邮箱,我来研究下[email protected]
      

  12.   


    0) 不好意思,没有收到邮件.
    1) 根据之前报错信息,初步分析EXCEL的字段和MS SQL中表名没匹配上.