Search
Write a publication
Pull to refresh

Comments 4

Если исходный JSON не содержал синтаксических погрешностей (с точки зрения JSON), то весь импорт можно было выполнить чисто средствами Postgre, вообще не привлекая к этому клиента на питоне.

и встречающиеся иногда невалидные (нарушен синтаксис, баланс скобок) JSON‑записи

Что-то я не увидел, где выполняются валидация и корректировка...

Добрый день! В моем случае, JSON было необходимо почистить от подстроки «NumberInt», которая была сохранена в JSON вне формата и ломала его. Т.к. статья про извлечение реляционных датасетов из построчного – посчитал нужным опустить описание корректировки и валидации, впредь учту.

За подсказку про импорт средствами PostgreSQL спасибо.

Так как JSON не плоский, в полях-внешних ключах (авторы, ключевые слова, etc) будут содержатся списки JSON-сущностей, которые средствами SQL придётся раскрывать также, как и здесь на Python – если необходимо использовать эти связи и строить агрегаты. Или встроенными средствами можно раскрыть эти связи из одного JSON сразу в несколько таблиц? Буду рад, если подскажете.

Исходный JSON - это типа одна строка - один объект? Или что там было? Судя по "lines = True" так и есть.

А, значит, предобработку можно было или вне пандаса делать (убрать "синтаксические погрешности") на чистом питоне. Ну или вообще на спарке (было бы даже прикольнее).

А так как-то странно... Особенно с учётом зачем-то вывода в CSV

Добрый день! Спасибо за обратную связь. В данном случае чуть сложнее, чем Вы описали.. В датасете одна строка – один объект (статья), НО в каждом из этих объектов вложен список других объектов, представляющих собой отделяемые от статей сущности (авторы, ключевые слова, etc).

Если бы было достаточно работать со записями статей без агрегатов по тем же авторам – согласен, можно было бы обойтись корректировкой и валидацией, после чего загружать в БД. Но работа со связанными сущностями в этом конкретном случае потребовалась, и пришлось придумывать решение.

Вывод в CSV можно легко переделать в связку с pandas.to_sql() + psycopg/sqlalchemy – этот момент я оставляю на усмотрение читателя.

Sign up to leave a comment.

Articles