2012-09-12 91 views
0

我使用LOAD DATA INFILE導入到一個MySQL表20躲過場分離器| -delimited .dat文件。但是一些|字段終止符,會用反斜槓。下面的第二個領域是一個例子:處理與MySQL的LOAD DATA INFILE

1001604|EMERITUS CORP\WA\|SC 13G|1996-02-13|edgar/data/1001604/0000728757-96-000006.txt 
1001604|EMERITUS CORP\WA\|SC 13G|1996-02-14|edgar/data/1001604/0000903949-96-000038.txt 

我得到一個錯誤,因爲聲明的倒數第二場與DATE類型的最後一場衝突。我可以打開.dat文件和逃生逃生,但有沒有更好的辦法?

我可以使用流編輯器來加倍所有的反斜槓,但這似乎是一個壞主意。我可以安全地將FIELDS ESCAPED BY選項更改爲「\」以外的選項嗎?或者這是一個壞主意?謝謝!

這裏是我的LOAD DATA INFILE命令:

LOAD DATA INFILE 'C:/users/richard/research/data/edgar/masterfiles/master_1996.dat' 
    INTO TABLE edgar.master 
    FIELDS TERMINATED BY '|' 
    IGNORE 1 LINES; 

回答

4

添加ESCAPED BY ''FIELDS子句允許無誤地完成查詢。我會更新,如果我發現這導致沉默失敗。

+0

'ESCAPED BY「」'是一個很好的解決方案,但它有效地禁用逃逸,從而干擾與MySQL的內置特殊字符,如'\ N'它用於將空。另一種方法是雙擊您要加載的文本,例如'EMERITUS CORP \\ WA \\ ...' – ishmael