PostgreSQL: Reporting Carrier On-Time Performance をロードする

 
US Department of Transportation が公開してるデータセットを Postgres12 にロードしたのでメモ。

まずは下記からデータをダウンロードする。

On-Time : Reporting Carrier On-Time Performance (1987-present)

右上のフィルターで Geography, Year, Period を選択するのと、あとはデータセットに含めたいカラムをチェックする。
全てのカラムがほしいので 全部チェックした。

そして Download をクリックすると zip が落ちてくる。

全カラム選択してフィルタで絞り込んでダウンロード

解凍後、CSV ファイルのヘッダ行と末尾の余計なカンマを sed で削除する。

cat data.csv |sed 1d | sed 's/,$//' > data2.csv

そしてテーブルを作る。
各カラムの桁数が不明なのでやや適当w

CREATE TABLE airline.flights (
       YEAR integer,
       QUARTER integer,
       MONTH integer,
       DAY_OF_MONTH integer,
       DAY_OF_WEEK integer,
       FL_DATE  varchar(10),
       OP_UNIQUE_CARRIER varchar(10),
       OP_CARRIER_AIRLINE_ID integer,
       OP_CARRIER varchar(10),
       TAIL_NUM varchar(10),
       OP_CARRIER_FL_NUM varchar(10),
       ORIGIN_AIRPORT_ID integer,
       ORIGIN_AIRPORT_SEQ_ID integer,
       ORIGIN_CITY_MARKET_ID integer,
       ORIGIN varchar(10),
       ORIGIN_CITY_NAME varchar(100),
       ORIGIN_STATE_ABR varchar(10),
       ORIGIN_STATE_FIPS varchar(10),
       ORIGIN_STATE_NM varchar(50),
       ORIGIN_WAC integer,
       DEST_AIRPORT_ID integer,
       DEST_AIRPORT_SEQ_ID integer,
       DEST_CITY_MARKET_ID integer,
       DEST varchar(10),
       DEST_CITY_NAME varchar(100),
       DEST_STATE_ABR varchar(10),
       DEST_STATE_FIPS varchar(10),
       DEST_STATE_NM varchar(50),
       DEST_WAC integer,
       CRS_DEP_TIME varchar(10),
       DEP_TIME varchar(10),
       DEP_DELAY numeric,
       DEP_DELAY_NEW numeric,
       DEP_DEL15 numeric,
       DEP_DELAY_GROUP numeric,
       DEP_TIME_BLK varchar(20),
       TAXI_OUT numeric,
       WHEELS_OFF varchar(10),
       WHEELS_ON varchar(10),
       TAXI_IN numeric,
       CRS_ARR_TIME varchar(10),
       ARR_TIME varchar(10),
       ARR_DELAY numeric,
       ARR_DELAY_NEW numeric,
       ARR_DEL15 numeric,
       ARR_DELAY_GROUP integer,
       ARR_TIME_BLK varchar(10),
       CANCELLED numeric,
       CANCELLATION_CODE varchar(10),
       DIVERTED numeric,
       CRS_ELAPSED_TIME numeric,
       ACTUAL_ELAPSED_TIME numeric,
       AIR_TIME numeric,
       FLIGHTS numeric,
       DISTANCE numeric,
       DISTANCE_GROUP integer,
       CARRIER_DELAY numeric,
       WEATHER_DELAY numeric,
       NAS_DELAY numeric,
       SECURITY_DELAY numeric,
       LATE_AIRCRAFT_DELAY numeric,
       FIRST_DEP_TIME varchar(10),
       TOTAL_ADD_GTIME  varchar(10),
       LONGEST_ADD_GTIME varchar(10),
       DIV_AIRPORT_LANDINGS integer,
       DIV_REACHED_DEST numeric,
       DIV_ACTUAL_ELAPSED_TIME numeric,
       DIV_ARR_DELAY numeric,
       DIV_DISTANCE numeric,
       DIV1_AIRPORT varchar(10),
       DIV1_AIRPORT_ID integer,
       DIV1_AIRPORT_SEQ_ID integer,
       DIV1_WHEELS_ON varchar(10),
       DIV1_TOTAL_GTIME numeric,
       DIV1_LONGEST_GTIME numeric,
       DIV1_WHEELS_OFF varchar(10),
       DIV1_TAIL_NUM varchar(20),
       DIV2_AIRPORT varchar(10),
       DIV2_AIRPORT_ID integer,
       DIV2_AIRPORT_SEQ_ID integer,
       DIV2_WHEELS_ON varchar(10),
       DIV2_TOTAL_GTIME numeric,
       DIV2_LONGEST_GTIME numeric,
       DIV2_WHEELS_OFF varchar(10),
       DIV2_TAIL_NUM varchar(20),
       DIV3_AIRPORT varchar(10),
       DIV3_AIRPORT_ID integer,
       DIV3_AIRPORT_SEQ_ID integer,
       DIV3_WHEELS_ON varchar(10),
       DIV3_TOTAL_GTIME numeric,
       DIV3_LONGEST_GTIME numeric,
       DIV3_WHEELS_OFF varchar(10),
       DIV3_TAIL_NUM varchar(20),
       DIV4_AIRPORT varchar(10),
       DIV4_AIRPORT_ID integer,
       DIV4_AIRPORT_SEQ_ID integer,
       DIV4_WHEELS_ON varchar(10),
       DIV4_TOTAL_GTIME numeric,
       DIV4_LONGEST_GTIME numeric,
       DIV4_WHEELS_OFF varchar(10),
       DIV4_TAIL_NUM varchar(20),
       DIV5_AIRPORT varchar(10),
       DIV5_AIRPORT_ID integer,
       DIV5_AIRPORT_SEQ_ID integer,
       DIV5_WHEELS_ON varchar(10),
       DIV5_TOTAL_GTIME numeric,
       DIV5_LONGEST_GTIME numeric,
       DIV5_WHEELS_OFF varchar(10),
       DIV5_TAIL_NUM varchar(20)
);

テーブルを作ったら先程用意した CSV をロードする。

psql -h localhost -U postgres -d postgres -c "\copy airline.flights from '/tmp/data2.csv' delimiter ',' csv"

以上