暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

SQL Server 导入 Excel

alitrack 2021-04-02
755


上次讲到了SQL Server 2014 Express的安装配置,这次继续导入外部数据的话题,以Excel为例。


先上视频,



导入的方式可以有多种,

  • 使用SQL Server 自带的导入导出向导,

这样做的好处是直观明了,缺点是不方便自动化


  • 使用SQL语句导入

    • 导入前确保已经安装了Microsoft Access 2010 数据库引擎可再发行程序包(https://www.microsoft.com/zh-CN/download/details.aspx?id=13255),并保证版本正确(32位还是64位,和系统对应上)

    • 保证SQL Server是以本地系统账号运行,如果不是,改过来,并重启SQL Server服务


否则会有类似报错,

    Msg 7399, Level 16, State 1, Server IE10WIN7, Line 2
    The OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)" report
    ed an error. The provider did not give any information about the error.
    Msg 7330, Level 16, State 2, Server IE10WIN7, Line 2
    Cannot fetch a row from OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked se
    rver "(null)".


      • 执行如下语句,


      USE [master]
      GO
      sp_configure 'show advanced options', 1;
      RECONFIGURE;
      GO
      sp_configure 'Ad Hoc Distributed Queries', 1;
      RECONFIGURE;
      GO
      EXEC master . dbo. sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'AllowInProcess' , 1
      GO
      EXEC master . dbo. sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'DynamicParameters' , 1
      GO


        • 别忘了告诉你打算把数据导入到哪个库,


          --打算把表创建在哪个库
          use metabase1
          -- 当然你也可以在sqlcmd指定数据库
          • 然后就可以建表,

          GO
          -- 创建新表并d导入
          SELECT * INTO titanic1
          FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
          'Excel 12.0; Database=C:\soft\titanic.xlsx; HDR=YES; IMEX=1',
          'SELECT * FROM [Sheet1$]');
          GO
            • 或者追加到已存在的表,

            INSERT INTO titanic1
            SELECT *
            FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
            'Excel 12.0; Database=C:\soft\titanic.xlsx; HDR=YES; IMEX=1',
            'SELECT * FROM [Sheet1$]');


              • 命令行的方式运行,

              sqlcmd -C -d metabase1 -i c:\soft\sql1.txt

              sql1.txt里放的就是上面的SQL语句



              • Excel转CSV,然后使用BCP命令,这个算另外一个话题了

              • 开发脚本(比如Python脚本)实现(先挖坑,待填)




              如果有什么建议和意见,也欢迎留言,或者加我个人微信,



              谢谢点亮[看]


              文章转载自alitrack,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

              评论