2010-07-02 46 views
1

我上傳了一個csv文件到MySQL數據庫,但由於某些原因,來自兩列的數據被粘貼到一個。MySQL字符串拆分

例如數據0880174V,D應該已經到了兩個不同的列。

有沒有一種方法(通過sql)我可以從這個列(即作爲0880174V和D)拆分數據並更新表,而不必刪除記錄並重新上傳?我有一百萬條記錄。

== CURRENT

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 - 太慢了 – 2010-07-02 20:36:08

+0

非常感謝。雖然它做了相反的事情(D 0880174V)而不是(0880174V D),但我瞭解到了這一點。感謝你的幫助。 – 2010-07-02 20:53:26

+0

Y,你是對的。對不起這是我的錯。無論如何改變了答案。在我的時區晚了,如果這是任何aval :) – 2010-07-02 21:06:06

1

您必須指定字段終止

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

編輯:NVM

1

一個簡單的解決方案是用INSTR使用,而不是SUBSTRING SUBSTRING_INDEX

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