MySQL批量插入CSV数据文件

时间:2010-05-11 13:33:33

标签: mysql csv shell

我有一些我要导入mySQL的CSV数据文件。我想在shell脚本中进行插入,以便它可以自动化。但是,我有点厌倦了在脚本中以明文形式提供用户名和密码

我有以下问题:

  1. 我对脚本中明文中的uname / pwd的想法感到不舒服(无论如何都在这周围,或者我是否太偏执了)?也许我可以设置一个只有INSERT privelege的用户来插入表格?

  2. 数据库表(导入原始数据)具有基于表列的唯一键。我尝试导入的数据中也可能存在重复项。我宁愿想告诉mySQL EITHER

    (a)使用新数据 OR 更新行 (b)IGNORE重复行。

    我选择的设置是整个导入,而不是逐行导入。是否有任何标志等我可以传递给mysql,以使其表现得像(a)上面的OR(b)

    1. 任何人都可以建议如何编写这样的(bourne)shell脚本吗?

1 个答案:

答案 0 :(得分:7)

您应该阅读mysqlimport,这是MySQL提供的命令行工具。此工具是批量加载CSV数据的最快方法。

该工具有两个options--replace--ignore来处理重复的密钥冲突。

关于安全性并避免将密码以纯文本形式放入脚本中,您还可以使用MYSQL_PWD环境变量或.my.cnf文件(确保文件为模式400或600)。请参阅End-User Guidelines for Password Security