---
title: "将 JSON 转换为 SQL"
description: "在浏览器中将 JSON 文件转换为适用于 PostgreSQL、MySQL、MariaDB、SQLite、SQL Server 或 Oracle 的 SQL。免费，文件永远不会上传。"
canonical: https://intosql.com/zh-cn/json-to-sql
last_updated: 2026-10-15
---

# 将 JSON 转换为 SQL

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

## 一个 JSON 文件，六种数据库

上方的示例 pedidos_2024.json，以及它的每一列在各个数据库中获得的类型。

| 文件中 | 第一个值 | PostgreSQL | MySQL | MariaDB | SQLite | SQL Server | Oracle |
| --- | --- | --- | --- | --- | --- | --- | --- |
| pedido | `000481` | `text` | `varchar(8)` | `varchar(8)` | `TEXT` | `nvarchar(8)` | `VARCHAR2(8 CHAR)` |
| cliente | `Peña Muñoz` | `text` | `varchar(16)` | `varchar(16)` | `TEXT` | `nvarchar(16)` | `VARCHAR2(16 CHAR)` |
| fecha | `2024-02-03T10:15:00Z` | `timestamptz` | `datetime` | `datetime` | `DATETIME` | `datetimeoffset` | `TIMESTAMP WITH TIME ZONE` |
| total | `1234.5` | `numeric(6,2)` | `decimal(6,2)` | `decimal(6,2)` | `NUMERIC(6,2)` | `decimal(6,2)` | `NUMBER(6,2)` |
| pagado | `true` | `boolean` | `tinyint(1)` | `tinyint(1)` | `BOOLEAN` | `bit` | `NUMBER(1)` |
| notas | `` | `text` | `varchar(32)` | `varchar(32)` | `TEXT` | `nvarchar(32)` | `VARCHAR2(32 CHAR)` |

## 将脚本导入你的数据库

下载的是普通的 .sql 文件。每种数据库都可用自带的工具运行它。

### PostgreSQL

```shell
psql -v ON_ERROR_STOP=1 -d mydb -f pedidos_2024.postgresql.sql
```

ON_ERROR_STOP 让 psql 在遇到第一个错误时停止。脚本在一个事务中运行，因此导入失败时数据库保持原样。 在 pgAdmin 或 DBeaver 中，将脚本打开到查询窗口并运行。

不使用脚本:

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

### 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
```

### MariaDB

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

脚本自身已设置 utf8mb4；该参数让客户端以相同方式发送，因此重音字符完整保留。 在 HeidiSQL 或 DBeaver 中打开脚本并运行。

不使用脚本:

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

### SQLite

```shell
sqlite3 pedidos_2024.db < pedidos_2024.sqlite.sql
```

如果数据库文件不存在，会自动创建。转换器也能直接下载现成的 .sqlite 数据库，无需任何命令。 在 DB Browser for SQLite 中，选择 Execute SQL，打开脚本并运行。

不使用脚本:

```shell
intosql load pedidos_2024.json --into pedidos_2024.db
```

### SQL Server

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

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

### Oracle

```shell
sqlplus user@//localhost/mydb @pedidos_2024.oracle.sql
```

脚本会关闭替换变量（SET DEFINE OFF），因此数据中的 & 符号会保持不变。 在 SQL Developer 中打开脚本，然后选择 Run Script (F5)。

## IntoSQL 如何读取 JSON 文件

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

## 关于各个数据库需要了解的内容

- 打开文件后选择数据库：每个数据库都使用它支持的类型。

### 各类值在每个数据库中的存储方式

| 值 | PostgreSQL | MySQL | MariaDB | SQLite | SQL Server | Oracle |
| --- | --- | --- | --- | --- | --- | --- |
| 是与否 | `boolean` | `tinyint(1)` | `tinyint(1)` | `BOOLEAN` | `bit` | `NUMBER(1)` |
| 整数 | `integer` | `int` | `int` | `INTEGER` | `int` | `NUMBER(10)` |
| 大整数 | `bigint` | `bigint` | `bigint` | `INTEGER` | `bigint` | `NUMBER(19)` |
| 小数 | `numeric(p,s)` | `decimal(p,s) · double` | `decimal(p,s) · double` | `NUMERIC(p,s) · TEXT` | `decimal(p,s)` | `NUMBER(p,s)` |
| 浮点数 | `double precision` | `double` | `double` | `REAL` | `float` | `BINARY_DOUBLE` |
| 日期 | `date` | `date` | `date` | `DATE` | `date` | `DATE` |
| 时刻 | `time` | `time(6) · time` | `time(6) · time` | `TIME` | `time` | `INTERVAL DAY(0) TO SECOND` |
| 带时间的日期 | `timestamp` | `datetime(6) · datetime` | `datetime(6) · datetime` | `DATETIME` | `datetime2` | `TIMESTAMP` |
| 带时间和时区偏移的日期 | `timestamptz` | `datetime(6) · datetime` | `datetime(6) · datetime` | `DATETIME` | `datetimeoffset` | `TIMESTAMP WITH TIME ZONE` |
| 文本 | `text` | `varchar(n) · text · mediumtext · longtext` | `varchar(n) · text · mediumtext · longtext` | `TEXT` | `nvarchar(n) · nvarchar(max)` | `VARCHAR2(n CHAR) · CLOB` |

## 关于 JSON 转 SQL 的问题

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

将文件拖到本页顶部的转换器上，并选择数据库：PostgreSQL、MySQL、MariaDB、SQLite、SQL Server 或 Oracle。每种数据库都使用它支持的类型。下载脚本后在数据库中运行。

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

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

### 它在各个数据库中使用哪些类型？

每种数据库各有其类型：是/否值在 PostgreSQL 中为 boolean，在 MySQL 和 MariaDB 中为 tinyint(1)，在 SQL Server 中为 bit，在 Oracle 中为 NUMBER(1)。本页的表格列出了每种值。

### 会保留前导零吗？

会。像 000481 这样的代码在每种数据库中都保持为文本，写作 '000481'，不会丢失任何零。

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

可以。命令行可免费导入 SQLite；使用 IntoSQL Pro，桌面应用和命令行还能导入 PostgreSQL、MySQL 和 MariaDB。SQL Server 和 Oracle 请运行脚本。

### JSON 文件可以多大？

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

## JSON 转其他数据库

- [将 JSON 转换为 PostgreSQL](https://intosql.com/zh-cn/json-to-postgresql)
- [将 JSON 转换为 MySQL](https://intosql.com/zh-cn/json-to-mysql)
- [将 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)

## 其他文件转 SQL

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