繁体   English   中英

如何使用 JQ 将数据导出到 csv 文件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM