是否可以使用LOAD DATA INFILE类型命令来更新数据库中的行?

cw8*_*w84 7 mysql load-data-infile

伪表:

 | primary_key | first_name | last_name | date_of_birth |
 | 1           | John Smith |           | 07/04/1982    |
Run Code Online (Sandbox Code Playgroud)

目前,first_name包含许多行的用户全名.期望的结果是拆分数据,因此first_name包含"John",last_name包含"Smith".

我有一个CSV文件,其中包含所需的数据格式:

 | primary_key | first_name | last_name |
 | 1           | John       | Smith     |
Run Code Online (Sandbox Code Playgroud)

是否有使用LOAD DATA INFILE命令来处理CSV文件更新使用primary_key此表中的所有行的方式 - 过程中(即DATE_OF_BIRTH)不能代替行中的任何其他数据?

dna*_*irl 7

在这种情况下,我通常LOAD DATA INFILE使用相同结构的临时表.然后,我做INSERTON DUPLICATE KEY UPDATE从临时表中的真正的表.这允许在不破坏真实表的情况下进行数据类型检查; 它相对较快,不需要摆弄你的.csv文件.


Chs*_*y76 5

不会.虽然LOAD DATA INFILE有一个REPLACE选项,它实际上会替换有问题的行 - 也就是说,删除现有行并插入一个新行.

如果将LOAD DATA INFILE配置为仅插入某些列,则所有其他列将设置为其默认值,而不是其当前包含的值.

您是否可以修改CSV文件以包含一堆UPDATE语句?通过一些正则表达式替换应该相当简单.