SQL Server 与 Access、Excel 数据转换方法

方予
方予
发布时间:2026-10-15| 2人浏览过
原创

本文详解 SQL Server 与 Access、Excel 之间数据导入导出的实现方法,涵盖使用 DTS 向导的图形化操作步骤,以及基于 OpenDataSource 和 OPENROWSET 函数的 T-SQL 代码示例。

SQL Server 与 Access 的数据转换

第1步:通过企业管理器(DTS)图形化导入

对于不熟悉代码的用户,可以通过 SQL Server 自带的 Data Transformation Services (DTS) 向导完成从 Access (.mdb) 到 SQL Server 的数据迁移:

  1. 启动向导:在 SQL Server Enterprise Manager(企业管理器)中,依次选择 Tools → Data Transformation Services → Import Data。
  2. 选择数据源:在 Choose a Data Source 对话框中选择 Microsoft Access as the Source,键入或浏览选择你的 .mdb 文件路径。
  3. 设定目标服务器:在 Choose a Destination 对话框中选择 Microsoft OLE DB Provider for SQL Server,输入服务器地址并选择相应的验证方式。
  4. 执行复制:在 Specify Table Copy 界面点击 Copy tables,并在 Select Source Tables 中勾选需要导入的表,最后点击完成即可。

第2步:利用 T-SQL 语句进行数据交互

在 Transact-SQL 中,主要使用 OpenDataSource 和 OPENROWSET 函数连接远程 Access 数据源。以下以 Jet.OLEDB.4.0 为提供程序,假设本地 Access 文件位于 C:\DB.mdb,用户名为 Admin 且无密码:

1. 查询 Access 数据至 SQL Server

SELECT *
FROM OpenDataSource(
    'Microsoft.Jet.OLEDB.4.0',
    'Data Source="c:\\DB.mdb";User ID=Admin;Password='
)...Table_Name

2. 将 Access 表导入 SQL Server 新建表

SELECT * 
INTO newtable 
FROM OPENDATASOURCE (
    'Microsoft.Jet.OLEDB.4.0',
    'Data Source="c:\\DB.mdb";User ID=Admin;Password='
)...Table_Name

3. 将 SQL Server 数据插入 Access 表

将指定列从 SQL Server 表复制到 Access 表的现有表中:

INSERT INTO OpenDataSource(
    'Microsoft.Jet.OLEDB.4.0',
    'Data Source="c:\\DB.mdb";User ID=Admin;Password='
)...Table_Name (Column1, Column2)
SELECT Column1, Column2 FROM sql_table_name

或者使用 OPENROWSET 完整表结构复制(例如从 SQL Server 库中的 Test 表复制到 Access 的 Test 表):

INSERT INTO OPENROWSET(
    'Microsoft.Jet.OLEDB.4.0',
    'C:\\db.mdb';'admin';'', Test)
SELECT id, name FROM Test

SQL Server 与 Excel 的数据转换

第3步:SQL Server 查询 Excel 数据

可以使用 OpenDataSource 配合 Excel OLE DB 提供程序直接查询 Excel 文件内容。注意 Excel 中的工作表名需加方括号和美元符号(如 [Sheet1$])。

SELECT * 
FROM OpenDataSource(
    'Microsoft.Jet.OLEDB.4.0',
    'Data Source="c:\\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0'
)...[Sheet1$]

第4步:将 Excel 数据导入 SQL Server

使用 SELECT ... INTO 语法可以将 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$]

第5步:将 SQL Server 数据导出为 Excel 文件

利用系统存储过程 master..xp_cmdshell 结合命令行工具 bcp,可以将查询结果直接导出为 .xls 格式:

EXEC master..xp_cmdshell 'bcp "SELECT col1, col2 FROM 库名.dbo.表名" queryout E:\DT.xls -c -Sservername -Usa -Ppassword'

参数说明:S 为 SQL 服务器名,U 为用户名(通常为 sa),P 为密码。也可通过 VB6 等语言调用 ADO 执行此命令来触发导出。

第6步:向 Excel 插入/更新数据

如果需要对 Excel 表格写入数据,可使用 INSERT INTO 语句:

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)

另一种写法是直接使用 OPENDATASOURCE 指定 Excel 8.0 属性:

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')

以上就是 SQL Server 与 Access、Excel 互导数据的详细内容,更多关于跨源数据交换的技术资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。