使用Curl从firebase导出大型json数据的问题

时间:2018-02-28 01:49:21

标签: firebase curl firebase-realtime-database

我需要从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"

任何帮助都会非常感激。

由于

3 个答案:

答案 0 :(得分:0)

我也遇到了这个问题,并通过使用 Postman 的 导入 功能摆脱了这个问题,因为下载大型 JSON 文件有时会在中途失败。您可以在其上放置传统的 cUrl 命令。您只需在收到回复后点击保存回复即可。 Postman 有时还需要预览 JSON,甚至冻结 UI,但您不必为此烦恼。 enter image description here

答案 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"

postscomments节点也是如此。

我希望这些节点不会太大。但如果碰巧是这样,你可以再次使用浅参数将它们分成更小的部分:

curl --globoff -k -o dr.json "https://mydatabase.firebaseio.com/data/users.json?shallow=true&format=export"