2009-11-13 47 views
1

我有一個CSV文件,其中包含從項目ID到一些新類別代碼的映射。Mysql從excel導入新代碼

例如

Project Id, New Code 
1, 035 
2, 029 
3, 023 
4, 035 
5, 029 
.... 

以上是一個CSV文件/ excel文件

我有與這些項目IDS項目表,我想用releavan新的代碼添加新列。

有沒有什麼辦法可以用mysql做到這一點?

回答

1

這裏是一個快速和骯髒的解決方案,使用Excel的CONCATENATE功能:

假設你有項目ID列A和新代碼在B列中,輸入以下列C:

=CONCATENATE("update projects set new_code = ",B1, " where project_id = ", A1, ";") 

然後複製並粘貼您的Excel電子表格中的所有行。這會生成SQL語句,然後您可以使用它來批量更新您的表。將文本複製到腳本中,然後讓MySQL執行它。

你會最終有一個腳本,看起來像這樣:

update projects set new_code = 35 where project_id = 1; 
update projects set new_code = 39 where project_id = 2; 
update projects set new_code = 23 where project_id = 3; 

當然,這是假設你已經有了新的列在表格中。如果沒有,請使用ALTER TABLE語句來添加:

alter table projects add column new_code int; 

注意:如果你要反覆做,我不推薦這方法 - 但如果它只是一個一次性的東西,然後一個快速的解決方案一樣這工作得很好。

+0

這是一個曾經關閉,因此..很有趣做法。不錯的主意 – 2009-11-13 13:18:16

1

第一個問題是將您的csv帶入數據庫。 有針對mysql的som解決方案,例如參見 http://dev.mysql.com/doc/refman/5.1/en/mysqlimport.html

還有第三方工具可以做這樣的事情。

當你有CSV,數據在數據庫中的一個新表並創建在您的項目表中的新列,只是做這樣的說法:

UPDATE projects p 
SET new_code = 
    (select distinct new_code from temp_table where project_id = p.project_id) 
+0

是的,這正是我發佈這個問題後想到的。說得通。 – 2009-11-13 13:19:08