Конвертация JSON в PostgreSQL
Перетащите файл JSON, чтобы получить скрипт для PostgreSQL с командами CREATE TABLE и INSERT. Каждый столбец получает тип, а каждое исправление указано со строкой и столбцом.
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 PostgreSQL.
SET client_encoding = 'UTF8';
BEGIN;
CREATE TABLE pedidos_2024 (
pedido text NOT NULL,
cliente text NOT NULL,
fecha timestamptz 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, TRUE, NULL),
('000482', 'José Ángel Ruiz', '2024-02-15 16:40:00+00:00', 99.9, FALSE, 'Entrega en la tarde'),
('000483', 'Zoë Ortíz', '2024-02-29 09:05:00+00:00', 12, TRUE, NULL),
('000484', 'Ñuño Castañeda', '2024-03-11 13:30:00+00:00', 980.75, TRUE, 'Factura con "RFC"');
COMMIT;
Исправления
- В "pedido" сохранены ведущие нули: 000481 остается 000481 и хранится как текст.
- "pagado" содержит слова да и нет (sí), они сохранены как логические значения.
Файл конвертируется на этом компьютере и никуда не загружается.
Другие примеры:
Из JSON в PostgreSQL, столбец за столбцом
Пример выше, pedidos_2024.json, в том виде, в котором IntoSQL записывает его для PostgreSQL: что хранит каждый столбец в файле, какой тип он получает и как его первое значение попадает в скрипт.
| В файле | Первое значение | Столбец | Тип в PostgreSQL | В скрипте |
|---|---|---|---|---|
| pedido | 000481 | pedido | text | '000481' |
| cliente | Peña Muñoz | cliente | text | 'Peña Muñoz' |
| fecha | 2024-02-03T10:15:00Z | fecha | timestamptz | '2024-02-03 10:15:00+00:00' |
| total | 1234.5 | total | numeric(6,2) | 1234.5 |
| pagado | true | pagado | boolean | TRUE |
| notas | - | notas | text | NULL |
Загрузите скрипт в PostgreSQL
Вы скачиваете обычный файл .sql. Запустите его штатными средствами PostgreSQL.
Из терминала
psql -v ON_ERROR_STOP=1 -d mydb -f pedidos_2024.postgresql.sqlON_ERROR_STOP останавливает psql на первой ошибке. Скрипт выполняется в одной транзакции, поэтому неудачная загрузка оставляет базу без изменений.
Из клиента базы данных
В pgAdmin или DBeaver откройте скрипт в окне запроса и выполните его.
Без скриптаPro
IntoSQL Pro загружает файл прямо в PostgreSQL из приложения для компьютера или командной строки, без написания скрипта.
intosql load pedidos_2024.json --into postgres://user@localhost/mydbЧто нужно знать о файлах JSON и PostgreSQL
Что IntoSQL читает в файлах JSON
- Файл может быть массивом объектов, объектом, который хранит этот массив под ключом вроде data, или одним объектом на строку (NDJSON).
- Каждый ключ становится столбцом. Объекты и массивы внутри значения сохраняются как текст JSON.
- Числа сохраняют все свои цифры, а даты ISO 8601 становятся датами или метками времени.
Что нужно знать о PostgreSQL
- Десятичные числа сохраняют все цифры как numeric(p,s), а даты со смещением становятся timestamptz.
- Текст в PostgreSQL не может содержать символ NUL, поэтому он удаляется из значений, где встречается.
- Скрипт выполняется в одной транзакции, поэтому неудачная загрузка не оставляет ничего наполовину.
Как каждый вид значений хранится в PostgreSQL
| Значение | PostgreSQL |
|---|---|
| Да и нет | boolean |
| Целые числа | integer |
| Большие целые числа | bigint |
| Десятичные числа | numeric(p,s) |
| Числа с плавающей точкой | double precision |
| Даты | date |
| Время суток | time |
| Даты со временем | timestamp |
| Даты со временем и смещением | timestamptz |
| Текст | text |
Вопросы о JSON в PostgreSQL
Нет ответа на ваш вопрос? Напишите нам через страницу контактов, и вам ответит человек. Страница контактов
Как конвертировать JSON в PostgreSQL?
Перетащите файл в конвертер в верхней части этой страницы. Он находит заголовок, читает каждое значение и записывает скрипт для PostgreSQL, перечисляя каждое исправление. Скачайте скрипт и запустите его через psql.
Какой структуры должен быть файл JSON?
Массив объектов, объект с таким массивом под ключом вроде data или по одному объекту в строке (NDJSON). Каждый ключ становится столбцом.
Какие типы PostgreSQL используются?
Значения да и нет становятся boolean, целые числа integer, дробные numeric(p,s), даты date, даты со временем timestamp, а текст text. Размеры берутся по самому длинному значению в каждом столбце.
Сохраняются ли ведущие нули в PostgreSQL?
Да. Код вроде 000481 остается текстом, поэтому PostgreSQL хранит его как text, а скрипт записывает как '000481'.
Можно ли загрузить данные в PostgreSQL без скрипта?
Да, с IntoSQL Pro. Приложение для компьютера и командная строка подключаются к PostgreSQL и загружают строки напрямую, сначала создав таблицу.
Насколько большим может быть файл JSON?
NDJSON, по одному объекту в строке, читается потоково, поэтому в браузере работают файлы в несколько гигабайт. Документ JSON читается целиком, поэтому его предел - память, которую браузер выделяет этой странице. Приложение для компьютера и командная строка принимают файлы любого размера.