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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Curl从firebase导出大型json数据的问题相关的知识,希望对你有一定的参考价值。

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

任何帮助将非常感激。

谢谢

答案

分割文件的简单方法是使用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"

以上是关于使用Curl从firebase导出大型json数据的问题的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Firebase 实时数据库导出为 CSV?

将数据从 firebase 导出到 bigQuery?

如何在Firebase上为cURL添加身份验证系统?

在firebase上使用gzip压缩

如何将所有事件数据从 Firebase 导出到 BigQuery?

如何将数据从 Firebase Crashlytics 导出到另一个应用程序?