json에서 csv 로의 변환에 대한 해결책을 찾았습니다. 다음은 샘플 json 및 솔루션입니다.
{
"took" : 111,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 2,
"relation" : "eq"
},
"max_score" : 1.0,
"hits" : [
{
"_index" : "alerts",
"_type" : "_doc",
"_id" : "1",
"_score" : 1.0,
"_source" : {
"alertID" : "639387c3-0fbe-4c2b-9387-c30fbe7c2bc6",
"alertCategory" : "Server Alert",
"description" : "Successfully started.",
"logId" : null
}
},
{
"_index" : "alerts",
"_type" : "_doc",
"_id" : "2",
"_score" : 1.0,
"_source" : {
"alertID" : "2",
"alertCategory" : "Server Alert",
"description" : "Successfully stoped.",
"logId" : null
}
}
]
}
}
해결책 :
jq -r '.hits.hits[]._source | [ "alertID" , "alertCategory" , "description", "logId" ], ([."alertID",."alertCategory",."description",."logId" // "null"]) | @csv' < /root/events.json
이 솔루션의 문제점은 열 이름을 하드 코딩해야한다는 것입니다. 내 json이 _source
나중에 태그 아래에 몇 가지 추가되면 어떻게됩니까? 에서 동적 데이터를 처리 할 수있는 솔루션이 필요합니다 _source
. 셸의 다른 도구 나 명령에 열려 있습니다.
간단히 사용하십시오 keys_unsorted
(또는 keys
정렬하려는 경우). 예를 들어 jq를 사용하여 JSON 배열을 CSV 로 변환 또는 jq를 사용하여 임의의 간단한 JSON을 CSV로 변환하는 방법을 참조하십시오 . 두 개의 SO 예. 다른 것도 많이 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다