Экспорт json из Firestore

Как мы можем скачать json файл в консоли Firebase RTDB, есть ли способ экспортировать json файл данных Firestore/данных документа?

Одна из моих основных целей - сравнить данные до/после обновления документа.

Ответ 1

Нет, вам нужно придумать свой собственный процесс, такой как запрос коллекции и цикл по всему.

Обновить

По состоянию на 7 августа 2018 года у нас есть управляемая система экспорта, которая позволяет вам выгружать данные в корзину GCS. Хотя это не JSON, это тот же формат, который используется Cloud Datastore, поэтому BigQuery это понимает. Это означает, что вы можете импортировать его в BigQuery.

Ответ 3

Я написал инструмент, который просматривает коллекции/документы базы данных и экспортирует все в один файл json. Кроме того, он также будет импортировать ту же структуру (полезно для клонирования/перемещения баз данных Firestore). Поскольку у меня было несколько коллег, использующих этот код, я решил опубликовать его как пакет NPM. Не стесняйтесь попробовать и дать отзыв.

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

Ответ 4

Firestore все еще находится на ранней стадии разработки, поэтому, пожалуйста, проверьте docs на резервные копии для любой информации, относящейся к Firestore.

Я нашел этот пакет npm, node-firestore-backup, чтобы быть простым и полезным.

Обратите внимание, что --accountCredentials path/to/credentials/file.json ссылается на ключ json файла учетной записи службы, который вы можете получить, следуя инструкциям из https://developers.google.com/identity/protocols/application-default-credentials.

  • Перейдите на страницу учетных данных консоли API.
  • В раскрывающемся списке проекта выберите свой проект.
  • На странице учетных данных выберите раскрывающийся список "Создать учетные данные", затем выберите "Ключ учетной записи службы".
  • В раскрывающемся списке "Служебная учетная запись" выберите существующую учетную запись службы или создайте новую.
  • Для типа ключа выберите опцию JSON, затем выберите "Создать". Файл автоматически загружается на ваш компьютер.
  • Поместите файл *.json, который вы только что загрузили, в каталог по вашему выбору. Этот каталог должен быть закрытым (вы не можете позволить кому-либо получить к нему доступ), но доступный для вашего кода веб-сервера.

Ответ 5

Если кто-то хочет решения с использованием Python 2.

Разместите это на https://github.com/RobinManoli/python-firebase-admin-firestore-backup

Сначала установите и настройте Firebase Admin Python SDK: https://firebase.google.com/docs/admin/setup

Затем установите его в вашей среде Python:

pip install firebase-admin

Установите модуль Firestore:

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

(из ImportError: не удалось импортировать библиотеку Cloud Firestore для Python)

Код 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)

Ответ 6

  1. Создайте пустую папку (назовите ее firebaseImportExport) и запустите npm init
  2. Перейдите к исходному проекту Firebase → Настройки → Учетные записи служб
  3. Нажмите кнопку " Создать новый закрытый ключ", переименуйте файл в source.json и поместите его в папку firebaseImportExport.
  4. Сделайте то же самое (шаги 2 и 3) для целевого проекта и переименуйте файл в destination.json
  5. Установите пакет npm я firebase-admin npm.
  6. Напишите следующий код в index.js

const firebase = require('firebase-admin');

var serviceAccountSource = require("./source.json");
var serviceAccountDestination = require("./destination.json");

const sourceAdmin = firebase.initializeApp({
    credential: firebase.credential.cert(serviceAccountSource),
    databaseURL: "https://**********.firebaseio.com" // replace with source
});

const destinationAdmin = firebase.initializeApp({
    credential: firebase.credential.cert(serviceAccountDestination),
    databaseURL: "https://$$$$$.firebaseio.com"
  }, "destination");

const collections = [ "books", "authors",   ...]; // replace with your collections

    var source = sourceAdmin.firestore();
    var destination = destinationAdmin.firestore();
   collections.forEach(colName => {
    source.collection(colName).get().then(function(querySnapshot) {
        querySnapshot.forEach(function(doc) {
            destination.collection(colName).doc(doc.id).set({...doc.data()});
        });
    });
   });