首页 > 解决方案 > 使用 gcloud SDK 将 Firestore 集合和文档导出和导入到存储桶进行备份

问题描述

我已经开始使用 React for UI 和 Firebase 作为后端服务来构建我的应用程序。我正在为我的数据库使用 Firestore。

我已经到了开始向它上传数据的地步(手动,通过我为此操作构建的 UI - 添加/编辑/删除表单)。

到目前为止,我有一些集合,我的所有数据都存储在 Firestore 中。

有时我需要使用 firebase-admin SDK 制作一些批量编辑脚本。例如:假设我决定需要将一些图像更改src为不同的域。我不能手动完成。

但现在我正在一次处理我的全部数据,如果我犯了错误,灾难可能性很大。

所以我搜索了一种将我的数据导出为备份的方法,并找到了这个文档:

https://firebase.google.com/docs/firestore/manage-data/export-import

gcloud我已按照教程操作,并设法使用SDK一次将所有数据导出到我的存储桶,方法是:

gcloud beta firestore export gs://[BUCKET_NAME]

在此处输入图像描述

现在我的存储桶中有这个文件夹,里面有一堆我无法真正检查/探索的文件和元数据。

问题 1:

是否可以检查/探索导出文件中的集合和文档?


就导入而言,文档说我可以做到:

// TO IMPORT EVERYTHING
gcloud beta firestore import gs://[BUCKET_NAME]/[EXPORT_PREFIX]/
// TO IMPORT SPECIFIC COLLECTIONS
gcloud beta firestore import gs://[BUCKET_NAME]/[EXPORT_PREFIX]/ --collection-ids=[COLLECTION_ID_1],[COLLECTION_ID_2]

问题2:

导入过程如何进行?它会取代我的 Firestore 中当前存在的现有集合吗?我需要在导入之前清除/清空我的 Firestore 还是会覆盖整个内容?

我想如果我有collection1并且collection2我只导入collection1,我假设collection2将保持不变,对吗?

标签: node.jsfirebasegoogle-cloud-firestoregcloudfirebase-admin

解决方案


这是我从 Firebase 官方支持团队得到的答案:

对于您的第一个问题,答案是否定的。您无法看到刚刚导出的数据,因为它被转换为二进制格式。尽管如此,有几个第三方 npm 包可以帮助您下​​载一些数据并能够查看数据,其中之一是firestore-backup-restore,您可以使用它来查看 JSON 格式的数据。

对于您的第二个问题,答案是肯定的,它将覆盖您在该特定集合中拥有的所有数据。例如,假设您有以下集合结构:

/test/iqifEWiQ3FaePS/data:xxxxx

然后你为这个特定的集合创建一个导出,然后你开始向集合中写入越来越多的数据,然后你将存储在存储桶中的数据导入到那个确切的集合中,你的结果将是完全相同的数据上面给出了。


推荐阅读