【问题标题】:How can I export my Firestore database from a Google Storage Bucket into a Json file如何将我的 Firestore 数据库从 Google 存储桶导出到 Json 文件中
【发布时间】:2021-02-11 11:42:11
【问题描述】:

情况如下:我有一个 Firestore 数据库。我每天都将它下载到 Google Cloud Storage Bucket 作为备份。如果我想在本地下载它,我使用这个命令gsutil -m cp -r gs://BUCKET_PATH "DESTINATION_PATH" 并且它工作正常。

我的问题:我下载的Bucket的格式是LevelDB(我认为)。在我的机器上,它看起来像这样:

例如,这是我通过 Google 存储下载时在 Firestore 中的 /users 集合。在文件夹中,我有多个二进制文件(“output-...”)和一个文件(这里:“all_namespaces_kind_users”)用于元数据。

我的目标:我希望能够在 json 文件中读取我的数据库。

我的尝试

#repoRoot = os.getcwd()
repoRoot = os.path.dirname(os.path.realpath(__file__))

# import google sdks
sys.path.append(os.path.join(repoRoot, 'SDKs/google_appengine'))
sys.path.append(os.path.join(repoRoot, 'SDKs/google-cloud-sdk/lib/third_party'))
from google.appengine.api.files import records
from google.appengine.datastore import entity_pb
from google.appengine.api import datastore

我的问题:如何将我的 Firestore 数据库(存储在 Google 存储桶中)转换为 json 文件? 也许有人有完全不同的提议方法?还是我应该坚持我的方式?在这种情况下,如何使用更新的谷歌库完成将转换器转换为 Python3 的工作?

BONUS QUESTION:如何 h**l 没有 Google 有一个干净的解决方案? (还是我傻?)

【问题讨论】:

  • 您使用什么命令或配方来备份数据库?
  • 我每天都在使用云函数和 Google Cloud Scheduler 调用该函数。我采用了与此处编写的相同的 Cloud 功能:medium.com/swlh/…(在 index.js 下)
  • 您好,一个不错的选择可能是在您的云功能中,每次您在使用 node-firebase-import-export 将数据库导出为 json 格式的同时对存储桶进行备份(查看导出部分) 然后你把它发送到其他地方保存。
  • 你找到解决这个问题的方法了吗?我有一种感觉,谷歌让这一切变得尽可能痛苦,以获取您的数据以绑定您的服务
  • 只需检查接受的解决方案。效果很好(子集合除外)。

标签: python firebase google-cloud-firestore google-cloud-storage google-cloud-datastore


【解决方案1】:

我在 Python 3 中创建了一个转换器,它可以将 Firestore 导出文件转换为 JSON 文件 firestore-export-json。该软件包提供了一个简单的 CLI 命令来隐藏文件。

fs_to_json [path_to_source_dir] -d [path_to_destination]

【讨论】:

  • 我测试了您的脚本并向其添加了拉取请求。我还发现了一个问题。
  • 不幸的是,直到今天,这仍然不适用于完整备份,仅适用于单个集合
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-18
  • 2018-06-24
  • 1970-01-01
  • 2018-06-08
  • 1970-01-01
  • 2022-10-17
  • 1970-01-01
相关资源
最近更新 更多