[英]How to export data to csv file using JQ
JSON 文件示例。
{
"entities": [
{
"id": "d130",
"name": "Abdoulaye, Aminata",
"division": {
"id": "d130",
"name": "",
"selfUri": "/api/v2/authorization/"
},
"chat": {
"jabberId": "62a0e0b060"
},
"email": "Aminata.Abdoulaye@",
"primaryContactInfo": [
{
"address": "Aminata.Abdoulaye@",
"mediaType": "EMAIL",
"type": "PRIMARY"
}
],
"addresses": [
{
"address": "Aminata.Abdoulaye@",
"mediaType": "EMAIL",
"type": "WORK"
}
],
将 JSON 转换为 csv 时,我设法创建了一个包含数据的 csv 文件,但 Z628CB5675FF56775FE3FZ 文件中没有显示标题。
gc --profile NewProfile users list -a --pageSize 100 | jq-win64 -r -c ".[1,2,3] | [.username,.addresses[].address,.id,.title]| @csv" > test.csv
我设法创建了一个包含标题但没有数据的 csv 文件。
gc --profile NewProfile users list -a --pageSize 100 | jq-win64 -r ".? |(map(keys) | add | unique) as $cols | map(. as $row | $cols | map($row[.])) as $rows | $cols, $rows[] | @csv" > test.csv
然后,当我尝试将两者合并在一起时,我收到一条错误消息,说 string ("Waled.Abdu...) has no keys
gc --profile NewProfile users list -a --pageSize 100 | jq-win64 -r ".[1,2,3] | [.username,.addresses[].address,.id,.title] |(map(keys) | add | unique) as $cols | map(. as $row | $cols | map($row[.])) as $rows | $cols, $rows[] | @csv" > test.csv
jq: error (at <stdin>:39688): string ("Waled.Abdu...) has no keys
Waled 在 JSON 中的详细信息如下所示。
{
"id": "b143",
"name": "Abdulkadir, Waled",
"division": {
"id": "b143",
"name": "",
"selfUri": "/api/v2/authorization/"
},
"chat": {
"jabberId": "63e6e"
},
"department": "Canada Solutions",
"email": "Waled.Abdulkadir@",
"primaryContactInfo": [
{
"address": "Waled.Abdulkadir@",
"mediaType": "EMAIL",
"type": "PRIMARY"
}
],
"addresses": [],
"state": "active",
"title": "Engineer",
"username": "Waled.Abdulkadir@",
"manager": {
"id": "f3cc8f83-14c0",
"selfUri": "/api/v2/users/14c0"
},
"version": 4,
"acdAutoAnswer": false,
"selfUri": "/api/v2/users/14c0"
},
任何建议将不胜感激。 谢谢
我会 go 有类似的东西:
jq -r '["username", "address", "id", "title"],
(.entities[]
| (try .addresses[].address // null) as $a
| [.username, $a, .id, .title] )
| @csv'
要规避 shell 引用问题,请考虑使用 -f 命令行选项。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.