如何将数据写入一个csv文件?

咪咪

我目前正在尝试将数据从 firebase 写入 csv 文件。它有点工作,但我得到三个不同的文件,我不知道如何解决这个问题。在这个时候我只是非常困惑。

你知道如何解决这个烂摊子吗?

这是我的 JSON:

{
  "records" : {
    "id1" : {
      "2020-08-11 15:40:13" : {
        "0" : "5"
      },
      "2020-08-11 16:35:09" : {
        "0" : "18"
      }
    },
    "id2" : {
      "2020-08-11 17:23:34" : {
        "0": "5"
      }
    },
    "id3" : {
      "2020-08-11 09:38:53" : {
        "0": "4"
      }
    },
    "id4" : {
      "2020-08-11 13:41:30" : {
        "0": "2"
      },
      "2020-08-11 13:41:44" : {
        "0": "3"
      }
    }
  }
}


基本上,我想获取所有 id 并将它们写入 csv 文件的一列。“测试”条目只是其他数据条目的占位符。

这是我到目前为止所拥有的:

function downloadData(){
    var db = firebase.database().ref();
    var dbRef = db.child('records');
    
    dbRef.once('value', function(snapshot) {
        snapshot.forEach(function(childSnapshot) {
            var childKey = childSnapshot.key;
            var b = [childKey, 'iwannasleep'];
            // console.log(childKey); 
            // console.log(b);

            var data = [b];
            console.log(data);



// ------------- export into csv ---------------


            var arrayHeader = ["user_id", "test"] 

            var csv = arrayHeader.join(',') + '\n';
            data.forEach( function(row) {
                csv += row.join(',');
                csv += "\n";
            });
        
            console.log(csv);

            var hiddenElement = document.createElement('a');
            hiddenElement.href = 'data:text/csv;charset=utf-8,' + encodeURI(csv);;
            hiddenElement.target = '_blank';
            hiddenElement.download = 'data.csv';
            hiddenElement.click();
        
        });
      });
}
弗兰克·范·普费伦

正如 RobIII 所评论的,您正在for 循环创建一个下载链接,这意味着您正在为每一行数据创建一个单独的元素。

你会想把它从循环中拉出来:

var db = firebase.database().ref();
var dbRef = db.child('dataRecordings');

dbRef.once('value', function(snapshot) {
    var arrayHeader = ["user_id", "test"] 
    var csv = arrayHeader.join(',') + '\n';

    snapshot.forEach(function(childSnapshot) {
        var childKey = childSnapshot.key;
        var b = [childKey, 'iwannasleep'];

        var data = [b];

        data.forEach(function(row) {
            csv += row.join(',');
            csv += "\n";
        });    
    });
    var hiddenElement = document.createElement('a');
    hiddenElement.href = 'data:text/csv;charset=utf-8,' + encodeURI(csv);;
    hiddenElement.target = '_blank';
    hiddenElement.download = 'data.csv';
    hiddenElement.click();
});

更新:您的问题中 JSON 发生的情况的示例:

const json = {
  "records" : {
    "id1" : {
      "2020-08-11 15:40:13" : {  "0" : "5" },
      "2020-08-11 16:35:09" : { "0" : "18" }
    },
    "id2" : {
      "2020-08-11 17:23:34" : { "0": "5" }
    },
    "id3" : {
      "2020-08-11 09:38:53" : { "0": "4" }
    },
    "id4" : {
      "2020-08-11 13:41:30" : { "0": "2" },
      "2020-08-11 13:41:44" : { "0": "3" }
    }
  }
}

var arrayHeader = ["user_id", "test"] 
var csv = arrayHeader.join(',') + '\n';

Object.keys(json.records).forEach((childKey) => {
    var b = [childKey, 'iwannasleep'];

    var data = [b];

    data.forEach(function(row) {
        csv += row.join(',');
        csv += "\n";
    });    
});

console.log(csv);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将mapPartitions的Iterator [String]结果写入一个文件?

Liquid Studio:如何将JSON模式$ ref写入另一个文件

如何将熊猫数据帧一行一行地写入CSV文件?

如何将数据帧的字典写入Pandas中的一个Excel文件?键是工作表名称,值是数据框

如何从javafx中的另一个类将数据写入.txt文件(FileWriter)

如何将unicode日文从一个文件写入另一个文件?

使用glob后如何将数据帧合并到一个csv文件中?

如何将scikit学习数据集写入CSV文件

如何将一个文件的行写入各自目录中的单个文件?

如何使用python将三个csv文件数据写入具有一个日期列和三个数据列的一个csv文件中

如何将已读取并解析的数据写入另一个文件?

如何将一些CSV文件合并到一个DataFrame中?

如何将这些数据写入CSV文件

将数据写入一个csv行Python

如何将解析的XML文件写入Java中的另一个文件

Python:如何将值从另一个csv文件写入一个csv文件

在继续下一个元素之前,如何将多个列表中的一个元素写入文件?

如何将多个pdf合并为一个而不将响应写入新文件

如何将一个 Map 中的 K 和另一个 Map 中的 V 写入一个文件?

如何将多个 python 数据帧转储/写入一个文本文件并保留它们的标题行?

如何将一列数组写入csv文件

如何将 For 循环数据写入 CSV 文件

如何编写脚本来读取多个 CSV 文件名和数据并写入另一个 CSV 文件?

如何将所有 csv 文件合并为一个文件并将数据堆叠在原始标题下?

如何将列表中的数据写入 CSV 文件?

如何将各种csv文件中的数据合并到python中的一个csv文件中?

尽管文件大小超过执行程序内存,如何使用一个分区将数据帧写入 csv 文件

如何将字典数据写入csv文件?

如何将多个列表写入一个文本文件,其中每个列表都写入一个新行?