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

# 将 JSON 转换为 MySQL

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

## 从 JSON 到 MySQL，逐列说明

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

| 文件中 | 第一个值 | 列 | MySQL 类型 | 脚本中 |
| --- | --- | --- | --- | --- |
| pedido | `000481` | `pedido` | `varchar(8)` | `'000481'` |
| cliente | `Peña Muñoz` | `cliente` | `varchar(16)` | `'Peña Muñoz'` |
| fecha | `2024-02-03T10:15:00Z` | `fecha` | `datetime` | `'2024-02-03 10:15:00'` |
| total | `1234.5` | `total` | `decimal(6,2)` | `1234.5` |
| pagado | `true` | `pagado` | `tinyint(1)` | `TRUE` |
| notas | `` | `notas` | `varchar(32)` | `NULL` |

## 将脚本导入 MySQL

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

### MySQL

```shell
mysql --default-character-set=utf8mb4 mydb < pedidos_2024.mysql.sql
```

脚本自身已设置 utf8mb4；该参数让客户端以相同方式发送，因此重音字符完整保留。 在 MySQL Workbench 中，选择 File、Run SQL Script，然后选择该文件。

不使用脚本:

```shell
intosql load pedidos_2024.json --into mysql://user@localhost/mydb
```

## IntoSQL 如何读取 JSON 文件

- 文件可以是对象数组、在 data 等键下保存该数组的对象，或者每行一个对象（NDJSON）。
- 每个键成为一列。值中的对象和数组以 JSON 文本保留。
- 数字保留全部位数，ISO 8601 日期会变成日期或时间戳。

## 关于 MySQL 需要了解的内容

- 是与否的值变为 tinyint(1)。不超过 255 个字符的文本为 varchar；更长的文本按大小使用 text、mediumtext 或 longtext。
- 脚本使用 utf8mb4 并设置 SQL 模式，因此重音字符、emoji、反斜杠和换行都会按原样导入。
- MySQL 的 datetime 不存储时区。

### 各类值在 MySQL 中的存储方式

| 值 | MySQL |
| --- | --- |
| 是与否 | `tinyint(1)` |
| 整数 | `int` |
| 大整数 | `bigint` |
| 小数 | `decimal(p,s) · double` |
| 浮点数 | `double` |
| 日期 | `date` |
| 时刻 | `time(6) · time` |
| 带时间的日期 | `datetime(6) · datetime` |
| 带时间和时区偏移的日期 | `datetime(6) · datetime` |
| 文本 | `varchar(n) · text · mediumtext · longtext` |

## 关于 JSON 转 MySQL 的问题

### 如何将 JSON 转换为 MySQL？

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

### JSON 文件需要什么结构？

对象数组、在 data 等键下保存该数组的对象，或每行一个对象（NDJSON）。每个键成为一列。

### 它使用哪些 MySQL 类型？

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

### 在 MySQL 中会保留前导零吗？

会。像 000481 这样的代码保持为文本，因此 MySQL 将其存储为 varchar(8)，脚本中写作 '000481'。

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

可以，使用 IntoSQL Pro。桌面应用和命令行会连接到 MySQL，先创建表，再直接导入各行。

### JSON 文件可以多大？

NDJSON（每行一个对象）以流式方式读取，因此在浏览器中几 GB 的文件也能处理。JSON 文档需要整体读取，因此上限取决于浏览器分配给本页的内存。桌面应用和命令行可处理任意大小的文件。

## JSON 转其他数据库

- [将 JSON 转换为 SQL](https://intosql.com/zh-cn/json-to-sql)
- [将 JSON 转换为 PostgreSQL](https://intosql.com/zh-cn/json-to-postgresql)
- [将 JSON 转换为 MariaDB](https://intosql.com/zh-cn/json-to-mariadb)
- [将 JSON 转换为 SQLite](https://intosql.com/zh-cn/json-to-sqlite)
- [将 JSON 转换为 SQL Server](https://intosql.com/zh-cn/json-to-sql-server)
- [将 JSON 转换为 Oracle](https://intosql.com/zh-cn/json-to-oracle)

## 其他文件转 MySQL

- [将 Excel 转换为 MySQL](https://intosql.com/zh-cn/excel-to-mysql)
- [将 CSV 转换为 MySQL](https://intosql.com/zh-cn/csv-to-mysql)
