Разделение строки MySQL - PullRequest
1 голос
/ 03 июля 2010

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

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

== ТЕКУЩИЙ

Column A       Column B
0880174V,D     

== ОЖИДАЕМЫЙ

Column A       Column B
0880174V        D   

Ответы [ 3 ]

6 голосов
/ 03 июля 2010
UPDATE my_table
SET ColumnB = SUBSTRING(ColumnA, INSTR(ColumnA, ',') + 1),
    ColumnA = SUBSTRING(ColumnA, 1, INSTR(ColumnA, ',') - 1)

Сначала сделайте SELECT TOP, чтобы успокоить свой разум.

1 голос
/ 05 апреля 2011

более простое решение - использовать SUBSTRING_INDEX вместо SUBSTRING с INSTR

ОБНОВЛЕНИЕ my_table
SET ColumnB = SUBSTRING_INDEX (ColumnA, ',', 1),
ColumnA = SUBSTRING_INDEX (ColumnA,, ', - 1)

1 голос
/ 03 июля 2010

Вы должны указать терминатор поля

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

РЕДАКТИРОВАТЬ : NVM

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...