将 JSON 转换为 SQLite
拖入你的 JSON 文件,即可得到包含 CREATE TABLE 和 INSERT 语句的 SQLite 脚本。每列都会获得类型,每处修正都会连同所在行和列一起列出。
已转换 4 行,2 处修正,无拒绝
| 行 | ||||||
|---|---|---|---|---|---|---|
| 2 | 000481 | Peña Muñoz | 2024-02-03T10:15:00Z | 1234.5 | true | |
| 3 | 000482 | José Ángel Ruiz | 2024-02-15T16:40:00Z | 99.9 | false | Entrega en la tarde |
| 4 | 000483 | Zoë Ortíz | 2024-02-29T09:05:00Z | 12 | true | |
| 5 | 000484 | Ñuño Castañeda | 2024-03-11T13:30:00Z | 980.75 | sí | Factura con "RFC" |
-- Written by IntoSQL for SQLite.
BEGIN;
CREATE TABLE pedidos_2024 (
pedido TEXT NOT NULL,
cliente TEXT NOT NULL,
fecha DATETIME NOT NULL,
total NUMERIC(6,2) NOT NULL,
pagado BOOLEAN NOT NULL,
notas TEXT
);
INSERT INTO pedidos_2024 (pedido, cliente, fecha, total, pagado, notas) VALUES
('000481', 'Peña Muñoz', '2024-02-03 10:15:00+00:00', 1234.5, 1, NULL),
('000482', 'José Ángel Ruiz', '2024-02-15 16:40:00+00:00', 99.9, 0, 'Entrega en la tarde'),
('000483', 'Zoë Ortíz', '2024-02-29 09:05:00+00:00', 12, 1, NULL),
('000484', 'Ñuño Castañeda', '2024-03-11 13:30:00+00:00', 980.75, 1, 'Factura con "RFC"');
COMMIT;
修正
- 已保留 "pedido" 中的前导零:000481 仍为 000481,以文本存储。
- "pagado" 包含是/否类词语(sí),已存储为布尔值。
文件在这台电脑上转换,永远不会上传。
其他示例:
从 JSON 到 SQLite,逐列说明
上方的示例 pedidos_2024.json 由 IntoSQL 为 SQLite 写出的结果:每列在文件中的内容、获得的类型,以及第一个值在脚本中的写法。
| 文件中 | 第一个值 | 列 | SQLite 类型 | 脚本中 |
|---|---|---|---|---|
| pedido | 000481 | pedido | TEXT | '000481' |
| cliente | Peña Muñoz | cliente | TEXT | 'Peña Muñoz' |
| fecha | 2024-02-03T10:15:00Z | fecha | DATETIME | '2024-02-03 10:15:00+00:00' |
| total | 1234.5 | total | NUMERIC(6,2) | 1234.5 |
| pagado | true | pagado | BOOLEAN | 1 |
| notas | - | notas | TEXT | NULL |
将脚本导入 SQLite
下载的是普通的 .sql 文件。用 SQLite 自带的工具运行即可。
在终端中
sqlite3 pedidos_2024.db < pedidos_2024.sqlite.sql如果数据库文件不存在,会自动创建。转换器也能直接下载现成的 .sqlite 数据库,无需任何命令。
在数据库工具中
在 DB Browser for SQLite 中,选择 Execute SQL,打开脚本并运行。
不使用脚本
命令行可将文件直接导入 SQLite 数据库,无需生成脚本,而且免费。
intosql load pedidos_2024.json --into pedidos_2024.db关于 JSON 文件和 SQLite 需要了解的内容
IntoSQL 如何读取 JSON 文件
- 文件可以是对象数组、在 data 等键下保存该数组的对象,或者每行一个对象(NDJSON)。
- 每个键成为一列。值中的对象和数组以 JSON 文本保留。
- 数字保留全部位数,ISO 8601 日期会变成日期或时间戳。
关于 SQLite 需要了解的内容
- 每列获得其值所需的类型,如 INTEGER、NUMERIC、TEXT、DATE 或 BOOLEAN;是与否存储为 1 和 0。
- 超过 15 位的小数保持为 TEXT,因此不会有位数因舍入而丢失。
- 下载 SQLite 脚本,或在浏览器中生成的现成 .sqlite 数据库。
各类值在 SQLite 中的存储方式
| 值 | SQLite |
|---|---|
| 是与否 | BOOLEAN |
| 整数 | INTEGER |
| 大整数 | INTEGER |
| 小数 | NUMERIC(p,s)TEXT |
| 浮点数 | REAL |
| 日期 | DATE |
| 时刻 | TIME |
| 带时间的日期 | DATETIME |
| 带时间和时区偏移的日期 | DATETIME |
| 文本 | TEXT |
关于 JSON 转 SQLite 的问题
这里没有你要的答案?请通过联系页面给我们留言,会有专人回复。 联系页面
如何将 JSON 转换为 SQLite?
将文件拖到本页顶部的转换器上。它会找到表头、读取每个值并写出 SQLite 脚本,同时列出每处修正。下载脚本后用 sqlite3 运行。
JSON 文件需要什么结构?
对象数组、在 data 等键下保存该数组的对象,或每行一个对象(NDJSON)。每个键成为一列。
它使用哪些 SQLite 类型?
是/否值变为 BOOLEAN,整数变为 INTEGER,小数变为 NUMERIC(p,s),日期变为 DATE,带时间的日期变为 DATETIME,文本变为 TEXT。长度取自每列中最长的值。
在 SQLite 中会保留前导零吗?
会。像 000481 这样的代码保持为文本,因此 SQLite 将其存储为 TEXT,脚本中写作 '000481'。
能不用脚本直接把数据导入 SQLite 吗?
可以,而且免费:intosql load 会创建 SQLite 数据库文件并导入各行。本页的转换器也能下载现成的 .sqlite 数据库。
JSON 文件可以多大?
NDJSON(每行一个对象)以流式方式读取,因此在浏览器中几 GB 的文件也能处理。JSON 文档需要整体读取,因此上限取决于浏览器分配给本页的内存。桌面应用和命令行可处理任意大小的文件。