node.js - 使用 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
将保持不变,对吗?
解决方案
这是我从 Firebase 官方支持团队得到的答案:
对于您的第一个问题,答案是否定的。您无法看到刚刚导出的数据,因为它被转换为二进制格式。尽管如此,有几个第三方 npm 包可以帮助您下载一些数据并能够查看数据,其中之一是
firestore-backup-restore
,您可以使用它来查看 JSON 格式的数据。对于您的第二个问题,答案是肯定的,它将覆盖您在该特定集合中拥有的所有数据。例如,假设您有以下集合结构:
/test/iqifEWiQ3FaePS/data:xxxxx
然后你为这个特定的集合创建一个导出,然后你开始向集合中写入越来越多的数据,然后你将存储在存储桶中的数据导入到那个确切的集合中,你的结果将是完全相同的数据上面给出了。
推荐阅读
- sql - Excel 只读文件的 SQL 请求未使用最新的文件版本
- java - Java - 找不到其他类的符号错误
- typescript - injectIntl 期望类的 props 包含 `intl`
- c - Vigenere 密码解码无法正常工作
- docker - 本地 Service Fabric Mesh 容器内没有互联网
- sas - sas,proc导出,版本号,删除xlsx
- java - Curl 在 JetBrains IDE (Windows) 中无法用于 POST
- ruby - 条件运算符不给出正确的结果
- python - 在 appjar 上布置图像
- python - 将项目保存到 discord.py 中的列表,然后将其发送到服务器