我使用json2csv来转换结构如下的多个json文件
{
"address": "0xe9f6191596bca549e20431978ee09d3f8db959a9",
"copyright": "None",
"created_at": "None"
...
}问题是,我需要将多个json文件放入一个csv文件中。
在我的代码中,我迭代一个散列文件,用该散列调用curl,并将数据输出到json。然后,我使用json2csv将每个json转换为csv。
mkdir -p curl_outs
{ cat hashes.hash; echo; } | while read h; do
echo "Downloading $h"
curl -L https://main.net955305.contentfabric.io/s/main/q/$h/meta/public/nft > curl_outs/$h.json;
node index.js $h;
json2csv -i curl_outs/$h.json -o main.csv;
done我使用-o将json输出到csv,但是它只是覆盖了以前的json数据。所以我只剩一排了。
我使用了>>,这会附加到csv文件中。
json2csv -i "curl_outs/${h}.json" >> main.csv但出于某种原因,它将数据的键附加到csv文件的末尾

我也试过
cat csv_outs/*.csv > main.csv但是,我得到了相同的输出。
如何将多个json文件附加到一个主csv文件?
发布于 2022-06-11 07:01:37
从图像和您的描述中还不完全清楚>>有什么问题,但是看起来可能CSV文件没有尾随行中断,所以在前一个文件的最后一行和列(单元格)的末尾直接追加下一个文件(>>)。
我几乎每天都和CSV打交道,我喜欢GoCSV工具。它的堆栈子命令将做这个名字所暗示的:堆叠多个CSV,一个放在另一个上面。
在您的示例中,您可以下载每个JSON并将其转换为单个(中间) CSV。最后,堆叠所有中间CSV,然后删除所有中间CSV。
mkdir -p curl_outs
{ cat hashes.hash; echo; } | while read h; do
echo "Downloading $h"
curl -L https://main.net955305.contentfabric.io/s/main/q/$h/meta/public/nft > curl_outs/$h.json;
node index.js $h;
json2csv -i curl_outs/$h.json -o curl_outs/$h.csv;
done
gocsv stack curl_outs/*.csv > main.csv;
# I suggested deleting the intermediate CSVs
# rm curl_outs/*.csv
# ...我将循环的最后一行改为json2csv -i curl_outs/$h.json -o curl_outs/$h.csv;,以创建前面提到的中间CSV。现在,gocsv的堆栈子命令可以获取中间CSV的列表,并为您提供main.csv。
https://stackoverflow.com/questions/72581166
复制相似问题