我有一个需要运行每日脚本的应用程序; 每日脚本包括下载包含1,000,000行的CSV文件,并将这些行插入表中.
我在Dreamhost中托管我的应用程序.我创建了一个遍历所有CSV行的while循环,并为每个行执行INSERT查询.问题是我得到了"500内部服务器错误".即使我将其分成1000个文件,每个1000行,我也不能在同一个循环中插入超过40或5万行.
有什么办法可以优化输入吗?我也在考虑使用专用服务器; 你怎么看?
谢谢!
佩德罗
OMG*_*ies 13
大多数数据库都有一个优化的批量插入过程--MySQL是LOAD DATA FILE语法.
要加载CSV文件,请使用:
LOAD DATA INFILE 'data.txt' INTO TABLE tbl_name
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES;
Run Code Online (Sandbox Code Playgroud)
插入多个值,而不是执行
insert into table values(1,2);
Run Code Online (Sandbox Code Playgroud)
做
insert into table values (1,2),(2,3),(4,5);
Run Code Online (Sandbox Code Playgroud)
一次最多适当的行数.
或者进行批量导入,这是加载数据的最有效方式,请参阅
http://dev.mysql.com/doc/refman/5.0/en/load-data.html