Mysql

如何從其他表中填充表的外鍵?

  • August 8, 2015

我有一個包含以下表格的數據庫:

機場( 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啟用了約束,請注意執行操作的順序 - 否則您可能會出錯。

引用自:https://dba.stackexchange.com/questions/110456