2010-05-11 68 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