Разделить огромный (95 МБ) массив JSON на более мелкие части?

Я экспортировал некоторые данные из моей базы данных в форме JSON, который по сути представляет собой всего один [список] с кучей (900 КБ) {объектов } внутри него.

Сейчас пытаюсь импортировать его на свой рабочий сервер, но у меня есть дешевый веб-сервер. Им не нравится, когда я съедаю все их ресурсы в течение 10 минут.

Как я могу разделить этот файл на более мелкие части, чтобы я мог импортировать его по частям?


Изменить: На самом деле, это файл База данных PostgreSQL. Я открыт для других предложений о том, как я могу экспортировать все данные по частям. На моем сервере установлен phpPgAdmin, который предположительно может принимать форматы CSV, Tabbed и XML.


Мне пришлось исправить скрипт phihag:

import json
with open('fixtures/PostalCodes.json','r') as infile:
  o = json.load(infile)
  chunkSize = 50000
  for i in xrange(0, len(o), chunkSize):
    with open('fixtures/postalcodes_' + ('%02d' % (i//chunkSize)) + '.json','w') as outfile:
      json.dump(o[i:i+chunkSize], outfile)

dump:

pg_dump -U username -t table database > filename

restore:

psql -U username < filename

(я не знаю что, черт возьми, делает pg_restore, но это дает мне ошибки)

В обучающих материалах эта информация удобно опускается, особенно. опция -U , которая, вероятно, необходима в большинстве случаев. Да, справочные страницы объясняют это, но всегда сложно отсеять 50 вариантов, которые вам не нужны.


В итоге я согласился с предложением Кенни ... хотя это все еще было большой проблемой. Мне пришлось выгрузить таблицу в файл, сжать ее, загрузить, извлечь, затем я попытался импортировать ее, но данные были немного другими при производстве и отсутствовали некоторые внешние ключи (почтовые индексы привязаны к городам). Конечно, я не мог просто импортировать новые города, потому что тогда он выдает ошибку дублирования ключа вместо того, чтобы молча игнорировать ее, что было бы неплохо. Поэтому мне пришлось очистить эту таблицу, повторить процесс для городов,только чтобы понять, что что-то еще связано с городами, поэтому мне пришлось очистить и этот стол. Вернул города, и, наконец, я смог импортировать свои почтовые индексы. К настоящему времени я уничтожил половину своей базы данных, потому что все привязано ко всему, и мне пришлось воссоздать все записи. Прекрасно. Хорошо, что я еще не запустил сайт. Кроме того, «опустошение» или усечение таблицы, похоже, не сбрасывает последовательности / автоинкременты, что я хотел бы, потому что есть пара магических записей, которые я хочу иметь ID 1. Итак .. Мне пришлось бы удалить или сбросить те тоже (я не знаю как), поэтому я вручную отредактировал PK для этих обратно до 1.

Я столкнулся бы с аналогичными проблемами с решением phihag, плюс мне пришлось бы импортировать 17 файлов по одному за раз , если я не написал другой сценарий импорта, соответствующий сценарию экспорта. Хотя он ответил на мой вопрос буквально, так что спасибо.

7
задан smci 4 September 2018 в 22:06
поделиться