我上傳了一個csv文件到MySQL數據庫,但由於某些原因,來自兩列的數據被粘貼到一個。MySQL字符串拆分
例如數據0880174V,D應該已經到了兩個不同的列。
有沒有一種方法(通過sql)我可以從這個列(即作爲0880174V和D)拆分數據並更新表,而不必刪除記錄並重新上傳?我有一百萬條記錄。
== CURRENT
Column A Column B
0880174V,D
==預期
Column A Column B
0880174V D
我上傳了一個csv文件到MySQL數據庫,但由於某些原因,來自兩列的數據被粘貼到一個。MySQL字符串拆分
例如數據0880174V,D應該已經到了兩個不同的列。
有沒有一種方法(通過sql)我可以從這個列(即作爲0880174V和D)拆分數據並更新表,而不必刪除記錄並重新上傳?我有一百萬條記錄。
== CURRENT
Column A Column B
0880174V,D
==預期
Column A Column B
0880174V D
UPDATE my_table
SET ColumnB = SUBSTRING(ColumnA, INSTR(ColumnA, ',') + 1),
ColumnA = SUBSTRING(ColumnA, 1, INSTR(ColumnA, ',') - 1)
做一個SELECT TOP
第一,以減輕你的頭腦。
您必須指定字段終止
load data local infile 'file.csv' into myTable
fields terminated by ','
enclosed by '"'
lines terminated by '\n'
(col1,col2)
編輯:NVM
一個簡單的解決方案是用INSTR使用,而不是SUBSTRING SUBSTRING_INDEX
UPDATE MY_TABLE
SET ColumnB = SUBSTRING_INDEX (ColumnA,',',1),
ColumnA = SUBSTRING_INDEX(ColumnA,',', - 1)
Bah humbug - 太慢了 – 2010-07-02 20:36:08
非常感謝。雖然它做了相反的事情(D 0880174V)而不是(0880174V D),但我瞭解到了這一點。感謝你的幫助。 – 2010-07-02 20:53:26
Y,你是對的。對不起這是我的錯。無論如何改變了答案。在我的時區晚了,如果這是任何aval :) – 2010-07-02 21:06:06