我有一個CSV文件,其中包含從項目ID到一些新類別代碼的映射。Mysql從excel導入新代碼
例如
Project Id, New Code
1, 035
2, 029
3, 023
4, 035
5, 029
....
以上是一個CSV文件/ excel文件
我有與這些項目IDS項目表,我想用releavan新的代碼添加新列。
有沒有什麼辦法可以用mysql做到這一點?
我有一個CSV文件,其中包含從項目ID到一些新類別代碼的映射。Mysql從excel導入新代碼
例如
Project Id, New Code
1, 035
2, 029
3, 023
4, 035
5, 029
....
以上是一個CSV文件/ excel文件
我有與這些項目IDS項目表,我想用releavan新的代碼添加新列。
有沒有什麼辦法可以用mysql做到這一點?
這裏是一個快速和骯髒的解決方案,使用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;
注意:如果你要反覆做,我不推薦這方法 - 但如果它只是一個一次性的東西,然後一個快速的解決方案一樣這工作得很好。
第一個問題是將您的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)
是的,這正是我發佈這個問題後想到的。說得通。 – 2009-11-13 13:19:08
這是一個曾經關閉,因此..很有趣做法。不錯的主意 – 2009-11-13 13:18:16