2013-10-05 21 views
0

我有超過8.000.000產品在一個大的MySQL數據庫

大mysql數據庫此時列「產品名稱」可以包含例如「Tag_Heuer觀看‘先行先試’的價值觀從現場刪除奇怪的字符(紅)」

我有幾百萬行的非AZ和0-9字符在產品名稱字段

我想刪除所有奇怪的字符在這一領域剛剛離開AZ和0-9和spaeces。所以在這個例子中,我希望這個字段是'Tag_Heuer Watch pilot red'。

Offcourse我可以遍歷所有行的連接str_replace函數具有以下功能領域:

<?php 
function stripJunk($string){ 
$string = preg_replace("/[^a-zA-Z0-9]/", " ", $string); 
$string = preg_replace("/\s{2,}/"," ",$string); 
$string = trim($string); 
return $string; 
} 
?> 

但是,這需要幾個小時:-(

什麼是做到這一點大概在1最好最快的方法使用限制從SQL查詢?

+0

可能重複的[如何在MySQL中執行正則表達式替換?](http://stackoverflow.com/questions/986826/how-to-do-a-regular-expression-replace-in-mysql ) – Denis

+1

最好是直接處理數據庫數據,而不是通過PHP檢索數據,然後再發回。你花費了很多資源。嘗試使用單個UPDATE語句更新數據庫,而不是使用一個查詢來記錄所有記錄。限制你想要更新的行,因爲8M記錄太多了! –

回答

0
  1. 選擇行。試試你的腳本刪除特殊字符和使用更新查詢來更新行。
  2. 要在mysql表中添加新列row_updated int default 0;一旦更新行的部分也更新row_updated爲1.
  3. 然後,您可以輕鬆更新組中的記錄。我猜這是做這件事的最好方法。