Импорт огромного файла JSON в БД - PullRequest
1 голос
/ 24 мая 2019

У меня есть 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);

Я не совсем уверен, что будет лучшим подходом, кто-то видит лучшеподход к реализации для этого?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...