我有一些要导入mySQL的CSV数据文件。我想在shell脚本中进行插入,以便可以将其自动化。但是,我对在脚本中使用明文形式输入用户名和密码感到有些厌倦
我有以下问题:
我对脚本中明文中的uname / pwd的想法感到不满意(反正还是这样,还是我太偏执)?也许我可以为插入表设置仅具有INSERT特权的用户?
数据库表(导入原始数据的数据库表)具有基于表列的唯一键。我尝试导入的数据中也可能有重复项。我希望能够将mySQL告诉 EITHER* ,而不是mySQL讨价还价(即整个插入失败) *
(a)使用新数据更新行, 或 (b)忽略重复的行。
我选择的任何设置都将用于整个导入,而不是逐行进行。是否有任何标志等可以传递给mysql以使其表现为类似于(a)或(b)的行为
您应该阅读有关mysqlimport的信息,这是MySQL随附的命令行工具。该工具是批量加载CSV数据的最快方法。
该工具有两个选项,--replace并--ignore处理重复键冲突。
--replace
--ignore
关于安全性和避免在脚本中以纯文本形式输入密码,您还可以使用MYSQL_PWD环境变量或.my.cnf文件(确保文件的模式为400或600)。请参阅《最终用户密码安全准则》。
MYSQL_PWD
.my.cnf