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

问题描述 投票:1回答:1

我需要从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太大”的相同错误

curl --range 0-55555555 --globoff -k -o dr.json "https://mydatabase.firebaseio.com/data.json?format=export"

任何帮助将非常感激。

谢谢

firebase curl firebase-realtime-database
1个回答
-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"
© www.soinside.com 2019 - 2024. All rights reserved.