2012-05-19 111 views
3

我嘗試了下面的腳本:LOAD DATA INFILE

LOAD DATA LOCAL INFILE 'myfile.csv' 
    REPLACE INTO TABLE `mydb`.`mytable` 
    CHARACTER SET latin1 FIELDS TERMINATED BY ',' 
    OPTIONALLY ENCLOSED BY '"' ESCAPED BY '"' 
    LINES TERMINATED BY '\r\n' 
    IGNORE 1 LINES (`field1`, `field1`, `field1`, `field1`, `field1`, `field1`); 

當我使用的500K記錄它的工作原理文件,但是當我嘗試一個CSV它返回的文件爲400萬條記錄:

Query OK, 0 rows affected (2.79 sec) 
Records: 0 Deleted: 0 Skipped: 0 Warnings: 0 

當然,在2.70秒內沒有任何內容會被添加!

我的RAM是4GB,我的輸入文件(大)是370MB。

任何人都可以提出解決方案嗎?

+2

大文件中的行尾可能不是'\ r \ n'。你在Windows還是Unix? – Phil

+0

窗口,我會嘗試另一種方式 –

+0

是的!它的工作原理,謝謝.. –

回答

5

大文件中的行尾可能不是'\ r \ n'。

LINES TERMINATED BY '\r\n'格式更改爲'\n'

+0

在你可以得到'\ r \ n'或'\ n'的情況下該怎麼辦,並且無法預測它? (請參閱http://stackoverflow.com/questions/10935219/mysql-load-data-infile-works-but-unpredictable-line-terminator) – SDC

+0

反過來將'\ r \ n'改爲'\ r'。將'LINES TERMINATED BY'\ r''參數添加到我的查詢中,使0計數達到預期的9,999 – SushiGuy