2010-05-11 43 views
4

我有一些CSV數據文件要導入到mySQL中。我想在shell腳本中執行插入操作,以便它可以自動化。不過,我有點厭倦不必在腳本中明文用戶名和密碼的從CSV數據文件插入MySQL批量

我有以下問題:

  1. 我有明文一個UNAME /密碼的想法不舒服在腳本中(無論如何,還是我太偏執)?也許我可以設置一個只有INSERT privelege才能插入表的用戶?

  2. 數據庫表(原始數據導入到其中)具有基於表列的唯一鍵。也可能是我嘗試導入的數據中可能存在重複項。而不是MySQL的barfing(即整個插入失敗),我反而希望能夠告訴MySQL 無論是

(一)新數據更新該行OR (B)忽略重複行。

無論選擇哪種設置,都是針對ENTIRE導入,而不是逐行排列。是否有任何標誌等我可以傳遞到MySQL爲了它的行爲像(一)或(b)以上

  1. 任何人都可以提出一個起點如何寫這樣的(bourne)shell腳本?

回答

7

您應該閱讀mysqlimport這是一個MySQL提供的命令行工具。此工具是批量加載CSV數據的最快方式。

該工具有兩個options,--replace--ignore來處理重複鍵衝突。

關於安全性和避免在腳本中以純文本形式輸入密碼,還可以使用MYSQL_PWD環境變量或.my.cnf文件(確保文件爲模式400或600)。見End-User Guidelines for Password Security

+1

謝謝 - 順便說一句,你確定你不是愛德華王子(威塞克斯伯爵),在這裏僞裝成一個極客!) – morpheous 2010-05-11 13:47:20

+2

哈哈!夾具起來了!哦,好吧,我想這已經回到了我完整的皇室職責。 – 2010-05-11 14:10:18