zoukankan      html  css  js  c++  java
  • 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查询字符串,如果表单名称中包含特殊字符如括号等,则需要采用第二种方式。 
  • 相关阅读:
    Java 中字符串的格式化
    JAVA字符串格式化-String.format()的使用
    JVM参数配置大全
    Java日期时间使用总结
    Java 通过JDBC连接Mysql数据库的方法和实例
    在eclipse导入Java 的jar包的方法 JDBC
    CentOS 7中如何安装mysql server
    python处理excel
    Chrome Developer Tools:Network Panel说明
    Mysql命令alter add:增加表的字段
  • 原文地址:https://www.cnblogs.com/AndyGe/p/2784208.html
Copyright © 2011-2022 走看看