我有一个PHP脚本,它接受一个csv并将其导入到mysql表中。我做了很少的测试,我发现脚本一次只插入999行。是否有这样的限制,如果是这样,在哪里? Mysql还是php?例如,如果我使用2500行的csv文件,则只会插入前999个。我很困惑。我已经将以下php参数设置为非常慷慨的值:
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')
即使我在php中增加了post_max_size,但这还不够。因此,我必须在/etc/php5/conf.d/suhosin.ini中更改这两个参数
suhosin.post.max_vars = 1000
suhosin.request.max_vars = 1000
我增加了价值并且有效。所有~3000行都是导入的。
答案 0 :(得分:2)
我想CSV导入没有这样的限制,但我会使用类似的东西从CSV导入数据
LOAD DATA INFILE 'mydata.csv' INTO TABLE YOUR_TABLE FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\r\n';