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)不能代替行中的任何其他数据?
在这种情况下,我通常LOAD DATA INFILE使用相同结构的临时表.然后,我做INSERT与ON DUPLICATE KEY UPDATE从临时表中的真正的表.这允许在不破坏真实表的情况下进行数据类型检查; 它相对较快,不需要摆弄你的.csv文件.
不会.虽然LOAD DATA INFILE有一个REPLACE选项,它实际上会替换有问题的行 - 也就是说,删除现有行并插入一个新行.
如果将LOAD DATA INFILE配置为仅插入某些列,则所有其他列将设置为其默认值,而不是其当前包含的值.
您是否可以修改CSV文件以包含一堆UPDATE语句?通过一些正则表达式替换应该相当简单.