---
title: "将 Excel 转换为 SQL Server"
description: "在浏览器中将 Excel 文件转换为适用于 SQL Server 的 SQL：先是带有类型化列的 CREATE TABLE，然后是 INSERT 语句。免费，文件永远不会上传。"
canonical: https://intosql.com/zh-cn/excel-to-sql-server
last_updated: 2026-10-15
---

# 将 Excel 转换为 SQL Server

拖入你的 Excel 文件，即可得到包含 CREATE TABLE 和 INSERT 语句的 SQL Server 脚本。每列都会获得类型，每处修正都会连同所在行和列一起列出。

## 从 Excel 到 SQL Server，逐列说明

上方的示例 clientes_2024.xlsx 由 IntoSQL 为 SQL Server 写出的结果：每列在文件中的内容、获得的类型，以及第一个值在脚本中的写法。

| 文件中 | 第一个值 | 列 | SQL Server 类型 | 脚本中 |
| --- | --- | --- | --- | --- |
| Nº Cliente | `00127` | `no_cliente` | `nvarchar(8)` | `N'00127'` |
| Nombre | `Peña Muñoz` | `nombre` | `nvarchar(16)` | `N'Peña Muñoz'` |
| C.P. | `01234` | `c_p` | `nvarchar(8)` | `N'01234'` |
| Alta | `03/02/2024` | `alta` | `date` | `'2024-02-03'` |
| Activo | `sí` | `activo` | `bit` | `1` |
| Saldo | `1.234,50` | `saldo` | `decimal(6,2)` | `1234.50` |

## 将脚本导入 SQL Server

下载的是普通的 .sql 文件。用 SQL Server 自带的工具运行即可。

### SQL Server

```shell
sqlcmd -S localhost -d mydb -f 65001 -i clientes_2024.sql_server.sql
```

-f 65001 以 UTF-8 读取文件，因此重音字符和 ñ 会按原样导入。 在 SQL Server Management Studio 或 Azure Data Studio 中打开文件，然后选择 Execute。

## IntoSQL 如何读取 Excel 文件

- 即使表头行上方有标题或备注，也能找到表头行，末尾的合计行会被排除。
- 以 Excel 序列号存储的日期会变成真正的日期，1900 和 1904 两种日期系统都支持。
- 带前导零的代码（如 00127）保持为文本。工作簿有多个工作表时，由你选择工作表。

## 关于 SQL Server 需要了解的内容

- 文本为 nvarchar，值写作 N'...'，因此重音字符得以保留；超过 4000 个字符的文本变为 nvarchar(max)。
- 是与否的值变为 bit，带时区偏移的日期变为 datetimeoffset。
- 长值会分段写入，因此 sqlcmd 和 SQL Server Management Studio 都能接受该脚本。

### 各类值在 SQL Server 中的存储方式

| 值 | SQL Server |
| --- | --- |
| 是与否 | `bit` |
| 整数 | `int` |
| 大整数 | `bigint` |
| 小数 | `decimal(p,s)` |
| 浮点数 | `float` |
| 日期 | `date` |
| 时刻 | `time` |
| 带时间的日期 | `datetime2` |
| 带时间和时区偏移的日期 | `datetimeoffset` |
| 文本 | `nvarchar(n) · nvarchar(max)` |

## 关于 Excel 转 SQL Server 的问题

### 如何将 Excel 转换为 SQL Server？

将文件拖到本页顶部的转换器上。它会找到表头、读取每个值并写出 SQL Server 脚本，同时列出每处修正。下载脚本后用 sqlcmd 运行。

### 会转换工作簿中的哪个工作表？

第一个可见的工作表。工作簿有多个工作表时，会出现"工作表"选项，你可以选择其他工作表。

### 它使用哪些 SQL Server 类型？

是/否值变为 bit，整数变为 int，小数变为 decimal(p,s)，日期变为 date，带时间的日期变为 datetime2，文本变为 nvarchar(n)。长度取自每列中最长的值。

### 在 SQL Server 中会保留前导零吗？

会。像 00127 这样的代码保持为文本，因此 SQL Server 将其存储为 nvarchar(8)，脚本中写作 N'00127'。

### 能不用脚本直接把数据导入 SQL Server 吗？

不能。请下载脚本并用 sqlcmd 运行。PostgreSQL、MySQL、MariaDB 和 SQLite 支持通过桌面应用或命令行直接导入。

### Excel 文件可以多大？

在浏览器中，工作簿需要整体读取，因此上限取决于浏览器分配给本页的内存。桌面应用和命令行可处理任意大小的工作簿；在 Apple M4 笔记本电脑上，命令行转换一个 117 MB、一百万行的工作簿约需一秒。

## Excel 转其他数据库

- [将 Excel 转换为 SQL](https://intosql.com/zh-cn/excel-to-sql)
- [将 Excel 转换为 PostgreSQL](https://intosql.com/zh-cn/excel-to-postgresql)
- [将 Excel 转换为 MySQL](https://intosql.com/zh-cn/excel-to-mysql)
- [将 Excel 转换为 MariaDB](https://intosql.com/zh-cn/excel-to-mariadb)
- [将 Excel 转换为 SQLite](https://intosql.com/zh-cn/excel-to-sqlite)
- [将 Excel 转换为 Oracle](https://intosql.com/zh-cn/excel-to-oracle)

## 其他文件转 SQL Server

- [将 CSV 转换为 SQL Server](https://intosql.com/zh-cn/csv-to-sql-server)
- [将 JSON 转换为 SQL Server](https://intosql.com/zh-cn/json-to-sql-server)
