如何從其他表中填充表的外鍵?
我有一個包含以下表格的數據庫:
機場( iata PK,機場,城市,州,國家,緯度,經度)
cancel_cause ( cod_cancellation PK , 描述)
製造商(id_manufacturer PK , manufacturer_name)
型號(id_model PK,model_name,id_manufacturer FK)
航空公司(航空公司程式碼PK,描述)
飛機類型(id_AirplaneType PK,飛機類型)
engine_type (id_engine PK , engine_tyoe)
飛機類型(id_飛機PK,飛機類型)
飛機(TailNumber PK、 id_model FK、id_aircraft FK、airline_code FK、id_AirplaneType FK、id_engine FK、Issue_date、狀態、年份)
航班(id_flight PK , cod_cancellation FK , TailNumber FK , iata_origin FK , iata_destin FK , Year, Month, DayofMonth, DayofWeek, DepTime, CRSTime, ArrTime, CRSArrTime, FlightNum, AtualElapsedTime, CRSElapsedTime, AirTime, ArrDelay, DepDelay, distane, TaxiIn, TaiOut , 已取消, 改道, CarrierDelay, WeatherDelay, NASDelay, SecurityDelay, LateAircraftDelay)
注:PK——主鍵;FK - 外鍵
我有一個 csv 文件“航班”,其中包含數百萬條記錄,其中包含“尾號、航空公司程式碼等”等資訊。對於每個航班。
還有一個補充 csv “飛機”,其中包含有關飛機的資訊(尾號、發動機類型、年份等)
在表 Flight、Airplane 和 Model 中,一些欄位可以直接複製,但我不知道如何正確地從外鍵載入數據。
誰來幫幫我?
你已經擁有所有的機場了嗎?他們中的一些?他們都沒有?細節取決於你在做什麼。
兩個步驟(每個規範化表):
INSERT...SELECT DISTINCT ... LEFT JOIN .. WHERE .. IS NULL
添加到規範化表。然後UPDATE ... SELECT ... JOIN...
取回ID。這裡的程式碼針對“其中一些”案例,bu 可能適用於所有 3 個案例。
如果您確實
FOREIGN KEY
啟用了約束,請注意執行操作的順序 - 否則您可能會出錯。