2010-07-02 5 views
1

Я загрузил файл csv в базу данных MySQL, но по некоторым причинам данные из двух столбцов приклеены к одному.MySQL string split

например. данные 0880174V, D должны были перейти к двум различным столбцам.

Есть ли способ (через sql), я могу разделить данные из этого столбца (т. Е. Как 0880174V и D) и обновить таблицу без необходимости удаления записи и повторной загрузки? У меня миллион записей.

== ТОКА

Column A  Column B 
0880174V,D  

== ОЖИДАЕМЫЕ

Column A  Column B 
0880174V  D 

ответ

6
UPDATE my_table 
SET ColumnB = SUBSTRING(ColumnA, INSTR(ColumnA, ',') + 1), 
    ColumnA = SUBSTRING(ColumnA, 1, INSTR(ColumnA, ',') - 1) 

сделать SELECT TOP первый, чтобы облегчить ваш ум.

+1

Bah humbug - слишком медленно –

+0

Большое спасибо. Хотя это как-то наоборот (D 0880174V) вместо (0880174V D), я получил представление. Ценю вашу помощь. –

+0

Yap, вы правы. Извини, я виноват. Изменен ответ в любом случае. Я опаздываю в своем часовом поясе, если это к любому авалю :) –

1

Вы должны указать конца поля

load data local infile 'file.csv' into myTable 
fields terminated by ',' 
enclosed by '"' 
lines terminated by '\n' 
(col1,col2) 

EDIT: NVM

1

более простое решение заключается в использовании SUBSTRING_INDEX вместо подстроки INSTR

UPDATE my_table
SET ColumnB = SUBSTRING_INDEX (ColumnA, ',', 1),
ColumnA = SUBSTRING_INDEX (ColumnA, ',', - 1)