4 варианта загрузки JSON из внешних источников
SALES — демонстрационная учетно-аналитическая база данных по учету продаж канцтоваров, которая регулярно получает новые данные извне, из разнообразных источников. Подавляющее большинство данных из внешней системы приходит в виде отчетов из системы на основе NoSQL СУБД MongoDB в формате JSON — “родного” представления данных в MongoDB.

Входная порция внешних данных представляет собой файл, содержащий JSON массив из большого количества JSON объектов сложной структуры. Каждый объект соответствует одной записи о продаже. Формат JSON позволяет поместить в один объект всю имеющуюся информацию о продаже, даже ту ее часть, которая не будет использована в аналитической БД.
Задача состоит в том, чтобы разобрать каждый объект из массива входных данных и поместить соответствующие значения в поля связанных записей трех таблиц аналитической системы. Отсутствующие записи таблиц SALE_RECORDS и ITEMS необходимо добавить.
В РЕД База Данных версии 5 массивные внешние данные могут быть загружены в БД несколькими способами.
- Импорт из файла в формате с разделителями (CSV) или файла из записей с полями фиксированной длины.
- Выборка из таблицы с использованием внешних файлов - все ее строки могут помещаться в отдельный текстовый файл, находящийся вне базы данных.
- Загрузка с клиентского компьютера с помощью утилиты-загрузчика.
- Так как JSON-данные в РЕД База Данных хранятся в виде полей Blob, можно воспользоваться встроенными средствами работы с внешними файлами Blob.
Импорт из файла с полями фиксированной длины или в формате с разделителями (CSV)
В данной задаче передаются данные в формате JSON, которые явно не являются полем с фиксированным размером. JSON не имеет выраженных колонок, хотя разные свойства объектов или элементы массивов могут разделяться запятыми. Данные JSON объектов могут располагаться на нескольких строках во входном текстовом файле. Представить входной набор, как файл CSV с единственным строковым полем, нельзя из-за правил применения двойных кавычек в формате CSV (вернее, это потребует внесения множества изменений в каждую запись).
Поэтому способ 1 не подходит.
Выборка из таблицы с использованием внешних файлов
СУБД РЕД База Данных поддерживает два формата внешних файлов: формат "строк с фиксированной длиной" и .csv формат. Столбцы таблицы, которые хранятся во внешних файлах, могут быть любого типа данных, кроме BLOB. Недопустимо также использование массивов с любым типом данных.
Следовательно, приходится отказаться от способа 2 по аналогичным способу 1 причинам.
Загрузка с клиентского компьютера с помощью приложения-загрузчика
В первом и втором способах новые данные сперва перемещаются на сервер БД и затем централизованно обрабатываются встроенными программными инструментами СУБД.
С помощью утилиты-загрузчика объемная порция внешних данных в формате JSON может быть быстро перенесена на сервер БД или загружена в таблицу. Однако в штатной поставке СУБД готовой такой программы нет и придется ее написать.
В зависимости от источника данных и вида носителя, на котором новые данные доставляются в демонстрационную БД, требования к программе-загрузчику существенно разные. Например, можно создать такое приложение, которое выполнит весь разбор и логическую обработку порции новых данных на клиентском компьютере, а в БД запишет уже результат. Как другой вариант, это может быть простая по функциям программа для передачи новых данных “как есть” и запуска обработки их на сервере, как в предыдущих способах.
Загрузка с использованием встроенных средств работы с внешними файлами Blob
Файловые блобы хранятся в каталогах, настраиваемых в файле directories.conf. Они управляются тремя системными функциями: CREATE_FILE, READ_FILE, DELETE_FILE. См. руководство администратора в документации
Файл directories.conf Находится в том же каталоге, куда была установлена СУБД РЕД База Данных. В данном файле задаются алиасы каталогов, в которых хранятся:
- файлы, заполненные BLOB-данными;
- файлы табличных пространств.
Структура файла:
database
{
blobs
{
<алиас_каталога_для_BLOB> = <существующий/путь/к/каталогу>
...
}
tablespaces
{
<алиас_каталога_для_tablespace> = <существующий/путь/к/каталогу>
...
}
}
Например, для СУБД на ОС Windows в него были внесены следующие изменения:
blobs
{
blob_dir = \_data\blobs
}
Затем в этот каталог был помещен файл с входными данными:

Теперь данные в виде BLOB можно получить запросом:
SELECT READ_FILE('BLOB_DIR/JSRC2.TXT') FROM RDB$DATABASE;

и применить к ним SQL/JSON.
Этот вариант также будет рассмотрен далее.
Дата последнего изменения: 11.09.2026
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.