J'ai exporté certaines données de ma base de données sous la forme de JSON, qui est essentiellement une [liste] avec un bouquet (900k) de {objets} à l'intérieur.
essayer de l'importer sur mon serveur de production maintenant, Mais j'ai un serveur Web bon marché. Ils n'aiment pas quand je mange toutes leurs ressources pendant 10 minutes. P>
Comment puis-je diviser ce fichier en petits morceaux afin que je puisse importer la pièce par pièce? P>
Je devais corriger le script de Phihag: P>
psql -U username < filename
4 Réponses :
en python:
En supposant que vous ayez la possibilité de revenir à nouveau et d'exporter les données ...: P>
pg_dump - extraire une base de données PostgreSQL dans un fichier de script ou un autre fichier d'archive. P>
pg_restore - restaurer une base de données PostgreSQL à partir d'un fichier d'archive créé par pg_dump. p>
Si cela n'est pas utile, il pourrait être utile de savoir ce que vous allez faire avec la sortie afin qu'une autre suggestion puisse frapper la marque. P>
pg_dump irait bien .... Mais la restauration constaterait probablement trop de ressources si ce n'est pas en morceaux. Tout ce que je fais avec la sortie l'importe sur mon serveur de production.
Je suppose que je suppose que le territoire, mais j'aurais pensé que l'utilisation de la ressource élevée dans la méthode JSON serait de faire avec l'analyse JSON. Mais comme je dis, c'est un Total i> devinez. J'essayerais la méthode pg_dump et pg_restore de voir ce qui s'est passé (en regardant des ressources, bien sûr;))
Il semble donc (il est probablement évident d'ici que je n'ai pas utilisé Postgres avant): - Seuls uniquement les données, pas le schéma (définitions de données).
Je me suis tourné le travail de phihag et de marque dans un script minuscule (GIST) Aussi copié ci-dessous: P>
#!/usr/bin/env python # based on http://stackoverflow.com/questions/7052947/split-95mb-json-array-into-smaller-chunks # usage: python json-split filename.json # produces multiple filename_0.json of 1.49 MB size import json import sys with open(sys.argv[1],'r') as infile: o = json.load(infile) chunkSize = 4550 for i in xrange(0, len(o), chunkSize): with open(sys.argv[1] + '_' + str(i//chunkSize) + '.json', 'w') as outfile: json.dump(o[i:i+chunkSize], outfile)
Je sais que c'est question est de passer d'un moment de retour, mais je pense que cette nouvelle solution est sans tracas.
Vous pouvez utiliser pandas 0.21.0 code> qui prend en charge un paramètre de chunksize dans le cadre de
read_json code>. Vous pouvez charger un morceau à la fois et enregistrer le JSON: P>
import pandas as pd
chunks = pd.read_json('file.json', lines=True, chunksize = 20)
for i, c in enumerate(chunks):
c.to_json('chunk_{}.json'.format(i))