Как мы можем скачать json файл в консоли Firebase RTDB, есть ли способ экспортировать json файл данных Firestore/данных документа?
Одна из моих основных целей - сравнить данные до/после обновления документа.
Как мы можем скачать json файл в консоли Firebase RTDB, есть ли способ экспортировать json файл данных Firestore/данных документа?
Одна из моих основных целей - сравнить данные до/после обновления документа.
Нет, вам нужно придумать свой собственный процесс, такой как запрос коллекции и цикл по всему.
По состоянию на 7 августа 2018 года у нас есть управляемая система экспорта, которая позволяет вам выгружать данные в корзину GCS. Хотя это не JSON, это тот же формат, который используется Cloud Datastore, поэтому BigQuery это понимает. Это означает, что вы можете импортировать его в BigQuery.
Я только что написал резервную копию и восстановление для Firestore. Вы можете попробовать мой GitHub.
https://github.com/dalenguyen/firestore-import-export
Или просто используйте резервную копию и восстановление из пакета NPM:
https://github.com/dalenguyen/firestore-backup-restore
Спасибо,
Я написал инструмент, который просматривает коллекции/документы базы данных и экспортирует все в один файл json. Кроме того, он также будет импортировать ту же структуру (полезно для клонирования/перемещения баз данных Firestore). Поскольку у меня было несколько коллег, использующих этот код, я решил опубликовать его как пакет NPM. Не стесняйтесь попробовать и дать отзыв.
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, который вы только что загрузили, в каталог по вашему выбору. Этот каталог должен быть закрытым (вы не можете позволить кому-либо получить к нему доступ), но доступный для вашего кода веб-сервера.
Если кто-то хочет решения с использованием 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)
npm я firebase-admin
npm.
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()});
});
});
});