• Excel的两种导入方式ACE和JET


    declare @dt datetime = getdate()
    
    --ACE导入2007格式Excel
    SELECT * into #t1 FROM OPENROWSET('microsoft.ace.oledb.12.0','Excel 12.0;database=d:\生物.xlsx', 'select * from [生物$]')
    
    select DATEDIFF(ms,@dt,getdate())
    
    set @dt = GETDATE()
    
    --导入97--2003格式Excel
    SELECT * into #t2 FROM OPENROWSET('microsoft.jet.oledb.4.0','Excel 8.0;database=d:\生物.xls', 'select * from [生物$]')
    
    select DATEDIFF(ms,@dt,getdate())
    
    drop table #t1
    drop table #t2
    go
    
    ---同样的数据内容,导入2007格式耗时3593毫秒,导入97--2003格式耗时810毫秒,由此可见ACE导入较为耗时
    
    --ACE导入中,Excel改成了8.0竟然也可以导入
    SELECT * into #t1 FROM OPENROWSET('microsoft.ace.oledb.12.0','Excel 8.0;database=d:\生物.xlsx', 'select * from [生物$]')
    
    --ACE也可导入97--2003格式Excel
    SELECT * into #t2 FROM OPENROWSET('microsoft.ace.oledb.12.0','Excel 8.0;HDR=yes;database=d:\生物.xls', 'select * from [生物$]')
    --上述语句其中"HDR=Yes,这代表第一行是标题,不做为数据使用 ,如果用HDR=NO,则表示第一行不是标题,做为数据来使用。系统默认的是YES
    
    drop table #t1
    drop table #t2
    go
    --
    --ACE导入中,支持表单名称包含特殊字符
    SELECT * into #t1 FROM OPENROWSET('microsoft.ace.oledb.12.0','Excel 12.0;database=d:\生物.xlsx', 'select * from [生物(单科)$]')
    
    --ACE不支持默认表单名称导入,否则返回消息 "无效的 SQL语句;期待 'DELETE'、'INSERT'、'PROCEDURE'、'SELECT'、或 'UPDATE'。"。
    --SELECT * into #t2 FROM OPENROWSET('microsoft.ace.oledb.12.0','Excel 8.0;HDR=yes;database=d:\生物.xls', '[生物(单科)$]')
    --上述语句其中"HDR=Yes,这代表第一行是标题,不做为数据使用 ,如果用HDR=NO,则表示第一行不是标题,做为数据来使用。系统默认的是YES
    
    drop table #t1
    
    
    其中OpenRowset的组后一个参数既可以是表单名称(注不添加引号,并且格式为[SheetName$]),或者为select查询字符串,如果表单名称中包含特殊字符如括号等,则需要采用第二种方式。 
  • 相关阅读:
    SharePoint讨厌“+”吗?
    如何判断文件是否在占用?
    深入浅出SharePoint——设置站点的默认欢迎页面
    深入浅出SharePoint——通过Feature部署Webpart
    VS2008只支持jQuery1.4.1以下版本
    深入浅出SharePoint——Group的常用操作
    深入浅出SharePoint——更新计算列
    深入浅出SharePoint——计算列如何使用Item的ID
    深入浅出SharePoint——在VS2008中正确定义Webpart并通过feature来部署
    理解Javascript_10_对象模型
  • 原文地址:https://www.cnblogs.com/AndyGe/p/2784208.html
Copyright © 2020-2023  润新知