簡體   English   中英

JQ 1.5:時間戳/日期轉換產生巨大的文件

[英]JQ 1.5: Timestamp / date transformation produce huge file

我在Windows 10 powershell環境下使用jq 1.5轉換json文件並將其導入到MS SQL數據庫。 原始的json文件約為1,1mb。 我將文件存儲在這里: Json原始文件 我使用以下jq命令來轉換數據:

[.legs[] | {Legid: .legId, Farecode: .fareBasisCode, Travelduration: .travelDuration, Traveldistance: .totalTravelDistance, Distanceunit: .totalTravelDistanceUnits, Refundable: .isRefundable , Nonstop: .isNonStop, Departure_Airport: .segments[].departureAirportName, Departure_Code: .segments[].departureAirportCode, Arrival_Airport: .segments[].arrivalAirportName, Arrival_Code: .segments[].arrivalAirportCode, Departure_Time: .segments[].departureTimeEpochSeconds, Arrival_Time: .segments[].arrivalTimeEpochSeconds, Airline: .segments[].airlineName, Airline_Code: .segments[].airlineCode, Flight_Number: .segments[].flightNumber, Equipment: .segments[].equipmentDescription}]

該命令產生以下文件轉換后的文件 現在,我不得不將UNIX時間戳轉換為日期。 所以我修改了命令:

[.legs[] | {Legid: .legId, Farecode: .fareBasisCode, Travelduration: .travelDuration, Traveldistance: .totalTravelDistance, Distanceunit: .totalTravelDistanceUnits, Refundable: .isRefundable , Nonstop: .isNonStop, Departure_Airport: .segments[].departureAirportName, Departure_Code: .segments[].departureAirportCode, Arrival_Airport: .segments[].arrivalAirportName, Arrival_Code: .segments[].arrivalAirportCode, Departure_Time: .segments[].departureTimeEpochSeconds, Arrival_Time: .segments[].arrivalTimeEpochSeconds, Airline: .segments[].airlineName, Airline_Code: .segments[].airlineCode, Flight_Number: .segments[].flightNumber, Equipment: .segments[].equipmentDescription}] | .[].Departure_Time |= todate | .[].Arrival_Time |= todate

沒有日期轉換的轉換文件大約有3 mb。 在轉換日期之后,文件大小約為40 mb。 我認為我的命令中存在邏輯錯誤,但找不到它。 提示?

問候蒂莫

使用迭代( .segments[] )會導致乘法行為:在您的情況下,由於在四種情況下.segments|length為2,因此在本地得到2 ^ 10的擴展,是四倍。

在這種情況下,使用少量但選擇良好的數據子集(或者更容易使用人工數據集)來檢查代碼將是有意義的。

也許您想要的更像是:

[ .legs[] | range(0; .segments|length) as $i | .... ]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM