web-dev-qa-db-fra.com

Exporter des JSON à partir de Firestore

Comme nous pouvons télécharger le fichier json sur la console Firebase RTDB, existe-t-il un moyen d’exporter un fichier json de données de collection/document Firestore?

L'un de mes principaux objectifs est de comparer les données avant/après la mise à jour du document.

11
miz-k

Il n’existe pas, vous devez créer votre propre processus, comme interroger une collection et effectuer une boucle sur tout.

Mettre à jour

Depuis le 7 août 2018, nous avons un système d'exportation géré par qui vous permet de transférer vos données dans un compartiment GCS. Bien que ce ne soit pas du JSON, il s'agit d'un format identique à celui utilisé par Cloud Datastore. BigQuery le comprend. Cela signifie que vous pouvez ensuite importer le fichier dans BigQuery .

14
Dan McGrath

Je viens d'écrire une sauvegarde et restaurer pour Firestore. Vous pouvez essayer mon GitHub.

https://github.com/dalenguyen/firestore-import-export

Ou utilisez simplement le package de sauvegarde et de restauration à partir de NPM: 

https://github.com/dalenguyen/firestore-backup-restore

Merci,

10
Dale Nguyen

J'ai écrit un outil qui parcourt les collections/documents de la base de données et exporte le tout dans un fichier json unique. De plus, il importera également la même structure (utile pour le clonage/le déplacement de bases de données Firestore). Depuis que plusieurs collègues ont utilisé le code, j'ai décidé de le publier sous forme de package NPM. N'hésitez pas à l'essayer et à donner votre avis.

https://www.npmjs.com/package/node-firestore-import-export

3
jloosli

Firestore en est encore à ses débuts. Veuillez consulter la documentation sur les sauvegardes pour plus d’informations sur Firestore.

J'ai trouvé ce paquet npm, node-firestore-backup , simple et utile.

Notez que --accountCredentials path/to/credentials/file.json fait référence à un fichier json de clé de compte de service que vous pouvez obtenir en suivant les instructions de https://developers.google.com/identity/protocols/application-default-credentials

  1. Accédez à la page Informations d'identification de la console API.
  2. Dans le menu déroulant du projet, sélectionnez votre projet.
  3. Sur la page Informations d'identification, sélectionnez le menu déroulant Créer les informations d'identification, puis sélectionnez Clé du compte de service.
  4. Dans le menu déroulant Compte de service, sélectionnez un compte de service existant ou créez-en un.
  5. Pour le type de clé, sélectionnez l'option Clé JSON, puis sélectionnez Créer. Le fichier est automatiquement téléchargé sur votre ordinateur.
  6. Placez le fichier * .json que vous venez de télécharger dans un répertoire de votre choix. Ce répertoire doit être privé (vous ne pouvez laisser personne y accéder), mais accessible au code de votre serveur Web.
2
willhlaw

Si quelqu'un veut une solution utilisant Python 2.

Cherchez-le https://github.com/RobinManoli/python-firebase-admin-firestore-backup

Première installation et configuration du kit de développement Python Admin Firebase: https://firebase.google.com/docs/admin/setup

Puis installez-le dans votre environnement python:

pip install firebase-admin

Installez le module Firestore:

pip install google-cloud-core
pip install google-cloud-firestore

(from ImportError: échec de l'importation de la bibliothèque Cloud Firestore pour Python )

Code python

# -*- coding: UTF-8 -*-

import firebase_admin
from firebase_admin import credentials, firestore
import json

cred = credentials.Certificate('xxxxx-adminsdk-xxxxx-xxxxxxx.json') # from firebase project settings
default_app = firebase_admin.initialize_app(cred, {
    'databaseURL' : 'https://xxxxx.firebaseio.com'
})

db = firebase_admin.firestore.client()

# add your collections manually
collection_names = ['myFirstCollection', 'mySecondCollection']
collections = dict()
dict4json = dict()
n_documents = 0

for collection in collection_names:
    collections[collection] = db.collection(collection).get()
    dict4json[collection] = {}
    for document in collections[collection]:
        docdict = document.to_dict()
        dict4json[collection][document.id] = docdict
        n_documents += 1

jsonfromdict = json.dumps(dict4json)

path_filename = "/mypath/databases/firestore.json"
print "Downloaded %d collections, %d documents and now writing %d json characters to %s" % ( len(collection_names), n_documents, len(jsonfromdict), path_filename )
with open(path_filename, 'w') as the_file:
    the_file.write(jsonfromdict)
1
Robin Manoli