2012-02-17 82 views
1

我有一個PHP腳本,需要一個CSV並將其導入到一個MySQL表中。我做了一些測試,發現腳本一次只能插入999行。有沒有這樣的限制,如果是的話,在哪裏? Mysql還是php?例如,如果我使用了2500行的csv文件,則只會插入前999個文件。我很困惑。我已經設置以下參數PHP的漂亮大方值:MySQL插入限制?

php_value upload_max_filesize 999M 
php_value post_max_size 999M 
php_value max_execution_time 900 
php_value max_input_time 900 

我不知道是什麼導致了這種行爲。我有一種感覺,即使我已經將post_max_size設置爲巨大的數字,html表單正在被切斷;我這樣說是因爲當我在長表單的末尾放置一個單選按鈕時,該單選按鈕不會在下一步的$ _POST數組中傳遞。


解決

玉傢伙,感謝試圖幫助。我正在挖掘日誌,發現問題。正如我懷疑的那樣,$ _POST陣列正在被切斷。我看着php日誌,發現這個條目:

Feb 17 17:12:54 workpc suhosin[3895]: ALERT - configured POST variable limit exceeded - dropped variable 'selected[]' (attacker '192.168.0.175', file '/var/www/html/sandbox/index.php') 

即使我已經增加了post_max_size在PHP中,這是不夠的。因此,我不得不在/etc/php5/conf.d/suhosin.ini

suhosin.post.max_vars = 1000 
suhosin.request.max_vars = 1000 

改變這兩個參數我增加的價值和它的工作。所有〜3000行都被導入。

+2

請告訴我們一些代碼,這是最有可能是由於你如何編碼您的導入。以非擴展格式存在插入限制,但人們很少使用該語法...... – 2012-02-17 21:58:20

+0

什麼是最大auto_increment值或auto_increment的最大字段大小?腳本是否快速停止?如果你通過循環運行它,你會得到一個mysql_error()? – MyStream 2012-02-17 21:59:16

+0

添加一些代碼。沒有看到代碼就很難說任何事情。 – 2012-02-17 22:01:43

回答

2

我想有上CSV進口沒有這樣的限制,但我會用這樣的事情從CSV的

導入數據
LOAD DATA INFILE 'mydata.csv' INTO TABLE YOUR_TABLE FIELDS TERMINATED BY ',' ENCLOSED BY '"' 
LINES TERMINATED BY '\r\n';