我将一个csv文件上传到MySQL数据库但由于某种原因,来自两列的数据被粘合到一个。
e.g。数据0880174V,D应该分为两个不同的列。
有没有办法(通过sql)我可以从这个列拆分数据(即0880174V和D)并更新表,而不必删除记录并重新上传?我有一百万条记录。
== CURRENT
Column A Column B
0880174V,D
==预期
Column A Column B
0880174V D
答案 0 :(得分:6)
UPDATE my_table
SET ColumnB = SUBSTRING(ColumnA, INSTR(ColumnA, ',') + 1),
ColumnA = SUBSTRING(ColumnA, 1, INSTR(ColumnA, ',') - 1)
先做一个SELECT TOP
让你放心。
答案 1 :(得分:1)
您必须指定字段终结符
load data local infile 'file.csv' into myTable
fields terminated by ','
enclosed by '"'
lines terminated by '\n'
(col1,col2)
编辑:nvm
答案 2 :(得分:1)
更简单的解决方案是使用SUBSTRING_INDEX而不是使用INSTR的SUBSTRING
更新my_table
SET ColumnB = SUBSTRING_INDEX(ColumnA,',',1),
ColumnA = SUBSTRING_INDEX(ColumnA,',', - 1)