使用gcloud导出Firestore数据:格式及转换相关问题咨询
Firestore导出格式与相关问题解答
你执行的Firestore导出命令如下:
gcloud storage buckets create gs://my-bucket gcloud firestore export gs://my-bucket --collection-ids=my-collection gcloud storage cp -r gs://my-bucket/2022-09-22T09:20:16_11252 my-directory
针对你的问题逐一解答:
1. 当前文件采用何种格式?
导出的output-*文件是Protocol Buffers(ProtoBuf)二进制序列化格式。这种格式主打紧凑高效,适合数据存储与传输,但属于二进制编码,直接打开可读性极差。
2. 是否可直接导出为JSON、CSV或XML格式?
gcloud firestore export命令本身不支持直接导出为JSON、CSV或XML格式,默认仅生成ProtoBuf格式的导出文件。若要直接获取这些格式,需通过其他方式实现:
- 用Firebase Admin SDK编写脚本,直接查询Firestore集合数据,再将结果序列化为JSON/CSV/XML。
- 使用第三方工具直接从Firestore读取数据并导出目标格式。
3. 能否将现有文件转换为JSON、CSV或XML格式?
可以转换,几种可行方式:
- 使用
firestore-export-import工具,它能解析Firestore的ProtoBuf导出文件并转换为JSON格式。 - 编写自定义脚本:基于Firestore公开的ProtoBuf实体定义(如
google/firestore/v1/document.proto),借助ProtoBuf解析库(比如Python的protobuf库)读取二进制文件,再将解析后的数据转换为JSON或CSV。 - 临时导入法:把导出的ProtoBuf文件导入测试用Firestore实例,再通过查询接口获取数据并导出为目标格式。
4. 为何output-0文件为空?
这是Firestore导出分片机制导致的正常现象。导出时系统会自动把数据分割为多个分片文件(output-0、output-1...),当导出数据量较小,不足以填满第一个分片(output-0)时,就会生成空的output-0,实际数据会写入后续分片文件。
内容的提问来源于stack exchange,提问作者Marc Van Daele
相关产品推荐
相关产品推荐

