Python 如何将Firestore数据库从Google存储桶导出到Json文件

Python 如何将Firestore数据库从Google存储桶导出到Json文件,python,firebase,google-cloud-firestore,google-cloud-storage,google-cloud-datastore,Python,Firebase,Google Cloud Firestore,Google Cloud Storage,Google Cloud Datastore,情况是这样的:我有一个Firestore数据库。我每天都把它下载到谷歌云存储桶中作为备份。如果我想在本地下载它,我可以使用这个命令gsutil-mcp-rgs://BUCKET\u-PATH“DESTINATION\u-PATH”来完成,它可以正常工作 我的问题:我下载的Bucket的格式是LevelDB(我想)。在我的机器上,它看起来像这样: 例如,当我通过Google Storage下载Firestore时,这是我在Firestore中的/users集合。在这个文件夹中,我有多个二进制文件

情况是这样的:我有一个Firestore数据库。我每天都把它下载到谷歌云存储桶中作为备份。如果我想在本地下载它,我可以使用这个命令
gsutil-mcp-rgs://BUCKET\u-PATH“DESTINATION\u-PATH”
来完成,它可以正常工作

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

例如,当我通过Google Storage下载Firestore时,这是我在Firestore中的
/users
集合。在这个文件夹中,我有多个二进制文件(“output-…”)和一个元数据文件(这里是:“all\u namespaces\u kind\u users”)

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

我的尝试

  • 我尝试使用这个转换器:但它使用Python2和一些旧的google库。使用此转换器,我必须在本地下载SDK(见下文)
#repoot=os.getcwd()
repoot=os.path.dirname(os.path.realpath(_文件__))
#导入谷歌SDK
sys.path.append(os.path.join(repoot,'SDKs/google\u appengine'))
sys.path.append(os.path.join(repoot,'SDKs/googlecloudsdk/lib/third_party'))
从google.appengine.api.files导入记录
从google.appengine.datastore导入实体\u pb
从google.appengine.api导入数据存储
  • 使用prevention转换器,我尝试使用以下建议将其更新为Python3:。我成功地替换了google.appengine.api.files导入记录的第一个导入
    ,但没有替换其他两个
  • 对于另外两个:
    来自google.appengine.datastore import entity_pb
    来自google.appengine.api import datastore
    ,我看到了这一点:但我不完全理解
我的问题:如何将Firestore数据库(存储在Google Bucket中)转换为json文件? 也许有人有完全不同的提议方式?还是我应该坚持我的方式?在这种情况下,如何使用更新的google Libraries完成将转换器转换为Python 3的工作


奖金问题:谷歌怎么没有一个干净的解决方案?(还是我很笨?

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

fs_to_json [path_to_source_dir] -d [path_to_destination]

你用什么命令或配方来备份数据库?我每天都用一个云函数和谷歌云调度器来调用这个函数。我使用了与本文相同的云函数:(在index.js下)您好,一个很好的选择可能是,每次在使用导出将数据库导出为json格式的同时,在您的云函数中为您的bucket创建一个backcup(检查导出部分)然后你将它发送到另一个地方保存。我测试了你的脚本并向其中添加了一个拉取请求。我还发现了一个问题。