2010-09-21 42 views
2

我想通過我的聯繫人管理應用程序中的CSV文件上傳數據。 CSV文件結構是這樣的:上傳CSV並用外鍵替換數據

Name, Phone, City 
John Doe, 555-555-5555, New York 

雖然在db表結構是這樣的:

name, phone, city_id 

在數據庫中,這個城市的名字被存儲在另一個表外鍵在聯繫人表中引用。

我的問題是我怎樣才能替換CSV文件中的城市名稱與城市ID插入數據庫。

背景信息:語言是PHP和數據庫MySQL的

感謝

回答

2

負載首先與結構(姓名,電話,市)臨時表,在那之後做出正確插入:

Select name, phone, city_id 
from temptable t, cities c 
WHERE t.city = c.CityName 
+0

+1使用臨時表進行導入。儘管在將數據插入實際表格之前,您可能必須對其進行一些基本的一致性檢查(即,檢查CSV中的每個城市是否已存在於城市表格中)。 – wimvds 2010-09-21 07:00:58

+0

如果我在csv文件中有太多記錄以及多於2個外鍵列,我認爲這種方法會太昂貴(效率方面)。 – 2010-09-22 07:34:13