2012-06-13 153 views
2

我當前的MySQL表employee_data有13行,17列。表中的數據來自一個CSV文件Employees.csv。在導入我的csv數據後,我添加了一個新的「密碼」列(因此它不在csv文件中)。密碼通過Web門戶進行編輯和訪問。我現在有一個更新的csv文件,我想用這些數據更新我的主表,但我不想丟失密碼信息。使用CSV文件更新MySQL表

我應該將我的新CSV文件導入到我的數據庫中的臨時表中,以及如何比較它們?我不確定從哪裏開始,我願意接受建議。

我現在意識到我應該將密碼信息保存在單獨的表格中。衛生署!

我想我可以創建一個php文件,比較每行基於employee_id字段,但與13k行,恐怕它可能會超時。

+2

你有沒有嘗試像MySQL工作臺的工具? – Gntem

+0

我沒有,但現在就看着他們。 – Denoteone

+0

您是要求提供代碼或查詢工具嗎? – user1166147

回答

9

我會做這樣的:

  • 創建temp table使用CREATE TABLE new_tbl LIKE orig_tbl;語法
  • 使用LOAD DATA INFILE從CSV數據導入表
  • 使用UPDATE來使用主鍵/唯一列更新主表(可能是employee_id

我已經使用包含1.2億行的表格和包含3000萬行代碼的導入CSV文件 - 這是我所有時間使用的方法 - 比PHP中的任何操作都更有效率(這就是我的服務器端語言的選擇)

+0

我認爲這是我首先要嘗試的選項。謝謝。 – Denoteone

+0

@Denoteone我建議你在嘗試這樣做之前備份你的數據.... – ManseUK

+1

完成並完成謝謝。 – Denoteone

1

嘗試比基於PHP的人 phpMyAdmin的 MySQL workbench是一個偉大的工具, 根據您的連接,將需要一段時間與您的數據查詢數據庫等其他工具。
有使用PHP超時限制的變通方法, set_time_limit();