我需要从Firebase数据库中的某个节点导出所有数据,但似乎该文件太大而无法通过firebase控制台中的“导出”选项下载。 因此,我试图通过使用firebase REST api通过Curl来下载json文件:
curl --globoff -k -o dr.json "https://mydatabase.firebaseio.com/data.json?format=export"
此命令能够执行某个文件大小范围(0 - 275Mb)的下载。不幸的是,不是我要下载的主文件,大约450 MB。尝试下载时出现此错误。
{ "error" : "Payload is too large"}
我也尝试通过拆分并设置下载限制来获取文件,但它仍然给出了“Payload is too large”的相同错误
curl --range 0-55555555 --globoff -k -o dr.json "https://mydatabase.firebaseio.com/data.json?format=export"
任何帮助都会非常感激。
由于
答案 0 :(得分:0)
我也遇到了这个问题,并通过使用 Postman 的 导入 功能摆脱了这个问题,因为下载大型 JSON 文件有时会在中途失败。您可以在其上放置传统的 cUrl 命令。您只需在收到回复后点击保存回复即可。 Postman 有时还需要预览 JSON,甚至冻结 UI,但您不必为此烦恼。
答案 1 :(得分:0)
对于寻找替代解决方案的任何人,您都可以使用 here 中所述的 shallow
功能:
浅
<块引用>这是一项高级功能,旨在帮助您处理大型数据集,而无需下载所有内容。要使用它,添加shallow=true 作为参数。这将限制返回数据的深度。如果该位置的数据是 JSON 原语(字符串、数字或布尔值),则将简单地返回其值。如果该位置的数据快照是 JSON 对象,则每个键的值将被截断为 true。
示例:https://mydatabase.firebaseio.com/.json?shallow=true&format=export
答案 2 :(得分:-1)
分割文件的简便方法是使用shallow
URI参数。如果您有这样的数据结构,例如:
{
"data":{
"users":{
//...dataset
},
"posts":{
//...dataset
},
"comments":{
//...dataset
}
}
}
当您运行curl --globoff -k -o dr.json "https://mydatabase.firebaseio.com/data.json?shallow=true&format=export"
时,它将返回:
{
"data":{
"users":true,
"posts":true,
"comments":true
}
}
然后,您可以使用以下内容下载users
节点:
curl --globoff -k -o dr.json "https://mydatabase.firebaseio.com/data/users.json?format=export"
posts
和comments
节点也是如此。
我希望这些节点不会太大。但如果碰巧是这样,你可以再次使用浅参数将它们分成更小的部分:
curl --globoff -k -o dr.json "https://mydatabase.firebaseio.com/data/users.json?shallow=true&format=export"