2015-09-01 69 views
0

我正在嘗試將CS​​V大容量名稱導入到MYSQL中,但在此過程中有一個特殊字符會暫停操作。如何讓mysql忽略名稱中的特殊字符

在名稱中的字符 - 佩雷斯

有沒有辦法有MYSQL忽略這一點上上傳? 我的下一步是通過網頁自動上傳,客戶只需上傳CSV文件並點擊提交,即可解決這些問題。

我把面板的建議,並重新創建我的表作爲UTF8 - 默認。

錯誤1366:不正確的字符串值:「\ xE9rez」在第1行 SQL語句列「acct_owner」:

我嘗試這樣做,我仍然可以對特殊字符相同的錯誤,再加上現在的一些因爲我的自動增量列不增加,它只是捕獲last_update列中的數據,因此所有內容都左移。

+1

這裏有丟失的信息。你使用什麼查詢來進行批量導入,文件使用哪個字符集,當它決定停止等時,告訴你什麼? – Eloims

+0

您是否有任何代碼,它是否暫停或發生錯誤,請提供更多信息。 – Naruto

+1

這不應該停止數據導入,而應將其更改爲您的列似乎是utf-8的latin1 intead。 –

回答

0

那麼如果你想用特殊字符insert/load CSV數據,你可以嘗試這樣的

LOAD DATA INFILE 'file.csv' 
IGNORE INTO TABLE table 
CHARACTER SET UTF8 
FIELDS TERMINATED BY ';' 
OPTIONALLY ENCLOSED BY '"' 
LINES TERMINATED BY '\n' 
0

要解決此我結束了重建我的數據庫表,然後我並提交我的數據我之前徑自用一些代碼循環通過它來刪除我知道導致我問題的字符。雖然可能不是最好的方式,但它確實是我找到的最簡單的方式。我最初有一個週期,刪除了任何不是標準A-Z或0-9的字符,但是我發現這導致了其他問題,因爲我需要查看;和\甚至/在我的一些細節。因此,我只專注於我知道打破MYSQL導入。

這裏是我使用的代碼的剪斷:

while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { 

//Replace all the special characters to avoid any insert errors 
$data = preg_replace('/\'/', '', $data); 
$data = preg_replace('/é/', 'e', $data); 

if($firstRow) { $firstRow = false; } 
else { 

    $import="INSERT INTO ..... blah blah blah....