У меня есть 4 ГБ JSON-файл, который мне нужно импортировать в БД.JSON:
{
"transport_metadata": {
"id": "81b18379105fa9626fde73b99bfa6cbac4d3618d",
"source_system": "test",
"build_version": "0.1.1",
"schema_version": "schema_x",
"creation_time": ""
},
"payload": {
"data": [
{...},{...},{...}
]
}
}
Единственная часть, которую мне нужно сохранить в базе данных - это массив данных.
Я пробовал библиотеку JSONStream с Postgres и Knex, используя транзакции, ноочевидно, JSONStream не очень хорошо справляется с огромными объемами данных и выходит из памяти (чего не следует, потому что он использует потоки .. профилирование показывает, что stream.write «протекает» из памяти (?).
Я попробовал функцию копирования PSQL, но не смог импортировать только .payload.data
во временную таблицу create unlogged table _import_jsonb (doc jsonb);
Я не совсем уверен, что будет лучшим подходом, кто-то видит лучшеподход к реализации для этого?