---
title: "Chuyển JSON sang SQL"
description: "Chuyển tệp JSON sang SQL cho PostgreSQL, MySQL, MariaDB, SQLite, SQL Server hoặc Oracle trong trình duyệt. Miễn phí, tệp không được tải lên."
canonical: https://intosql.com/vi/json-sang-sql
last_updated: 2026-10-15
---

# Chuyển JSON sang SQL

Thả tệp JSON và chọn cơ sở dữ liệu để nhận tập lệnh SQL với câu lệnh CREATE TABLE và INSERT. Mỗi cột được gán kiểu, và mọi bản sửa đều được liệt kê kèm hàng và cột.

## Một tệp JSON, sáu cơ sở dữ liệu

Tệp mẫu ở trên, pedidos_2024.json, và kiểu dữ liệu mà mỗi cột nhận được trong từng cơ sở dữ liệu.

| Trong tệp | Giá trị đầu tiên | 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)` |

## Nạp tập lệnh vào cơ sở dữ liệu của bạn

Tệp tải xuống là một tệp .sql thông thường. Mỗi cơ sở dữ liệu chạy nó bằng công cụ riêng.

### PostgreSQL

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

ON_ERROR_STOP khiến psql dừng ở lỗi đầu tiên. Tập lệnh chạy trong một giao dịch, nên nếu nạp thất bại, cơ sở dữ liệu vẫn giữ nguyên. Trong pgAdmin hoặc DBeaver, mở tập lệnh trong cửa sổ truy vấn và chạy.

Không cần tập lệnh:

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

### MySQL

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

Tập lệnh tự đặt utf8mb4; cờ này khiến client gửi theo cùng cách, nên dấu được giữ nguyên. Trong MySQL Workbench, chọn File, Run SQL Script, rồi chọn tệp.

Không cần tập lệnh:

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

### MariaDB

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

Tập lệnh tự đặt utf8mb4; cờ này khiến client gửi theo cùng cách, nên dấu được giữ nguyên. Trong HeidiSQL hoặc DBeaver, mở tập lệnh và chạy.

Không cần tập lệnh:

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

### SQLite

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

Tệp cơ sở dữ liệu được tạo nếu chưa có. Trình chuyển đổi cũng tải xuống sẵn một cơ sở dữ liệu .sqlite, không cần lệnh nào. Trong DB Browser for SQLite, chọn Execute SQL, mở tập lệnh và chạy.

Không cần tập lệnh:

```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 đọc tệp dưới dạng UTF-8, nên dấu và ñ được nạp đúng như đã viết. Trong SQL Server Management Studio hoặc Azure Data Studio, mở tệp và chọn Execute.

### Oracle

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

Tập lệnh tắt biến thay thế (SET DEFINE OFF), nên dấu & trong dữ liệu vẫn là dấu &. Trong SQL Developer, mở tập lệnh và chọn Run Script (F5).

## IntoSQL đọc gì trong tệp JSON

- Tệp có thể là một mảng đối tượng, một đối tượng chứa mảng đó dưới một khóa như data, hoặc mỗi dòng một đối tượng (NDJSON).
- Mỗi khóa trở thành một cột. Đối tượng và mảng bên trong một giá trị được giữ dưới dạng văn bản JSON.
- Số giữ nguyên từng chữ số, và ngày ISO 8601 trở thành ngày hoặc dấu thời gian.

## Những điều cần biết về từng cơ sở dữ liệu

- Chọn cơ sở dữ liệu sau khi mở tệp: mỗi cơ sở dữ liệu nhận các kiểu mà nó hỗ trợ.

### Cách mỗi loại giá trị được lưu trong từng cơ sở dữ liệu

| Giá trị | PostgreSQL | MySQL | MariaDB | SQLite | SQL Server | Oracle |
| --- | --- | --- | --- | --- | --- | --- |
| Có và không | `boolean` | `tinyint(1)` | `tinyint(1)` | `BOOLEAN` | `bit` | `NUMBER(1)` |
| Số nguyên | `integer` | `int` | `int` | `INTEGER` | `int` | `NUMBER(10)` |
| Số nguyên lớn | `bigint` | `bigint` | `bigint` | `INTEGER` | `bigint` | `NUMBER(19)` |
| Số thập phân | `numeric(p,s)` | `decimal(p,s) · double` | `decimal(p,s) · double` | `NUMERIC(p,s) · TEXT` | `decimal(p,s)` | `NUMBER(p,s)` |
| Số dấu phẩy động | `double precision` | `double` | `double` | `REAL` | `float` | `BINARY_DOUBLE` |
| Ngày | `date` | `date` | `date` | `DATE` | `date` | `DATE` |
| Giờ trong ngày | `time` | `time(6) · time` | `time(6) · time` | `TIME` | `time` | `INTERVAL DAY(0) TO SECOND` |
| Ngày kèm giờ | `timestamp` | `datetime(6) · datetime` | `datetime(6) · datetime` | `DATETIME` | `datetime2` | `TIMESTAMP` |
| Ngày kèm giờ và độ lệch múi giờ | `timestamptz` | `datetime(6) · datetime` | `datetime(6) · datetime` | `DATETIME` | `datetimeoffset` | `TIMESTAMP WITH TIME ZONE` |
| Văn bản | `text` | `varchar(n) · text · mediumtext · longtext` | `varchar(n) · text · mediumtext · longtext` | `TEXT` | `nvarchar(n) · nvarchar(max)` | `VARCHAR2(n CHAR) · CLOB` |

## Câu hỏi về JSON sang SQL

### Làm sao để chuyển JSON sang SQL?

Thả tệp vào trình chuyển đổi ở đầu trang này và chọn cơ sở dữ liệu: PostgreSQL, MySQL, MariaDB, SQLite, SQL Server hoặc Oracle. Mỗi cơ sở dữ liệu nhận các kiểu mà nó hỗ trợ. Tải tập lệnh xuống và chạy trong cơ sở dữ liệu.

### Tệp JSON cần có cấu trúc thế nào?

Một mảng đối tượng, một đối tượng chứa mảng đó dưới một khóa như data, hoặc mỗi dòng một đối tượng (NDJSON). Mỗi khóa trở thành một cột.

### Nó dùng những kiểu nào trong từng cơ sở dữ liệu?

Mỗi cơ sở dữ liệu có kiểu riêng: giá trị có/không là boolean trong PostgreSQL, tinyint(1) trong MySQL và MariaDB, bit trong SQL Server và NUMBER(1) trong Oracle. Bảng trên trang này liệt kê mọi loại giá trị.

### Số 0 ở đầu có được giữ không?

Có. Một mã như 000481 vẫn là văn bản trong mọi cơ sở dữ liệu, được viết là '000481', nên không mất số 0 nào.

### Có thể nạp dữ liệu mà không cần tập lệnh không?

Có. Dòng lệnh nạp vào SQLite miễn phí, và với IntoSQL Pro, ứng dụng máy tính và dòng lệnh nạp vào PostgreSQL, MySQL và MariaDB. Với SQL Server và Oracle, hãy chạy tập lệnh.

### Tệp JSON có thể lớn đến đâu?

NDJSON, mỗi dòng một đối tượng, được đọc theo luồng, nên tệp vài gigabyte vẫn chạy được trong trình duyệt. Tài liệu JSON được đọc toàn bộ, nên giới hạn là bộ nhớ trình duyệt cấp cho trang này. Ứng dụng máy tính và dòng lệnh nhận tệp ở mọi kích thước.

## JSON sang các cơ sở dữ liệu khác

- [Chuyển JSON sang PostgreSQL](https://intosql.com/vi/json-sang-postgresql)
- [Chuyển JSON sang MySQL](https://intosql.com/vi/json-sang-mysql)
- [Chuyển JSON sang MariaDB](https://intosql.com/vi/json-sang-mariadb)
- [Chuyển JSON sang SQLite](https://intosql.com/vi/json-sang-sqlite)
- [Chuyển JSON sang SQL Server](https://intosql.com/vi/json-sang-sql-server)
- [Chuyển JSON sang Oracle](https://intosql.com/vi/json-sang-oracle)

## Các tệp khác sang SQL

- [Chuyển Excel sang SQL](https://intosql.com/vi/excel-sang-sql)
- [Chuyển CSV sang SQL](https://intosql.com/vi/csv-sang-sql)
