一尘不染

MySQL从CSV数据文件批量插入

mysql

我有一些要导入mySQL的CSV数据文件。我想在shell脚本中进行插入,以便可以将其自动化。但是,我对在脚本中使用明文形式输入用户名和密码感到有些厌倦

我有以下问题:

  1. 我对脚本中明文中的uname / pwd的想法感到不满意(反正还是这样,还是我太偏执)?也许我可以为插入表设置仅具有INSERT特权的用户?

  2. 数据库表(导入原始数据的数据库表)具有基于表列的唯一键。我尝试导入的数据中也可能有重复项。我希望能够将mySQL告诉 EITHER* ,而不是mySQL讨价还价(即整个插入失败) *

(a)使用新数据更新行, (b)忽略重复的行。

我选择的任何设置都将用于整个导入,而不是逐行进行。是否有任何标志等可以传递给mysql以使其表现为类似于(a)或(b)的行为

  1. 谁能建议一个关于编写这样的(bourne)shell脚本的起点?

阅读 923

收藏
2020-05-17

共1个答案

一尘不染

您应该阅读有关mysqlimport的信息,这是MySQL随附的命令行工具。该工具是批量加载CSV数据的最快方法。

该工具有两个选项--replace--ignore处理重复键冲突。

关于安全性和避免在脚本中以纯文本形式输入密码,您还可以使用MYSQL_PWD环境变量或.my.cnf文件(确保文件的模式为400或600)。请参阅《最终用户密码安全准则》

2020-05-17