You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Excel文件中指定工作表批量插入至SQL Server?

用SQL Server导入Excel多工作表数据的解决方案

首先明确:BULK INSERT不支持直接读取Excel文件,它仅适用于文本类数据源(如CSV、TXT)。Excel属于二进制格式文件,需要借助OLE DB驱动(如Microsoft.ACE.OLEDB.12.0)来读取指定工作表。

读取指定工作表(GotvShiftsTab)的代码示例

你可以使用OPENROWSET替代BULK INSERT,实现指定工作表的数据导入:

DROP TABLE IF EXISTS #GotvShifts

CREATE TABLE #GotvShifts 
(
    VANID            varchar(100),
    contact_name     varchar(100),
    signup_date      varchar(100),
    status_          varchar(100),
    role_            varchar(100),
    event_name       varchar(100),
    event_type       varchar(100),
    event_date       varchar(100),
    shift_start_time varchar(100),
    shift_end_time   varchar(100),
    location_name    varchar(100),
    recruited_by     varchar(100)
)

-- 导入GotvShiftsTab工作表的数据
INSERT INTO #GotvShifts
SELECT *
FROM OPENROWSET(
    'Microsoft.ACE.OLEDB.12.0',
    'Excel 12.0 Xml;HDR=YES;Database=\\na2-fs1\DCDATA6\Cases\Active\47758 – Meza v Coty\Team Member Folders\AS\data_exam_q1_datasets.xlsx',
    'SELECT * FROM [GotvShiftsTab$]'
)

导入第二个工作表的方法

如果第二个工作表结构与#GotvShifts一致,可直接追加数据:

-- 假设第二个工作表名为SecondTab
INSERT INTO #GotvShifts
SELECT *
FROM OPENROWSET(
    'Microsoft.ACE.OLEDB.12.0',
    'Excel 12.0 Xml;HDR=YES;Database=\\na2-fs1\DCDATA6\Cases\Active\47758 – Meza v Coty\Team Member Folders\AS\data_exam_q1_datasets.xlsx',
    'SELECT * FROM [SecondTab$]'
)

若第二个工作表结构不同,需先创建对应结构的临时表,再执行上述INSERT逻辑。

注意事项

  • 确保SQL Server服务运行账户拥有共享文件夹\\na2-fs1\DCDATA6\...的读取权限
  • 服务器需安装Microsoft Access Database Engine 2010 Redistributable(提供Microsoft.ACE.OLEDB.12.0驱动)
  • Excel文件路径需使用双反斜杠\\,或把共享路径映射为本地驱动器后使用驱动器路径

内容的提问来源于stack exchange,提问作者Austin Salley

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 05:42:41