繁体   English   中英

PhpMyAdmin数据导入性能问题

[英]PhpMyAdmin data import performance issues

最初,我的问题与PhpMyAdmin的SQL部分无法正常工作有关。 正如评论中所建议的那样,我意识到输入的数量是无法处理的。 但是,这并没有为我提供一个有效的解决方案,如何处理(CSV)格式的文件(在我的情况下 - 35,000条记录行):

...
20120509,126,1590.6,0
20120509,127,1590.7,1
20120509,129,1590.7,6
...

PhpMyadmin中的Import选项正在苦苦挣扎,正如SQL部分中的基本复制粘贴输入那样。 这一次,与之前相同,直到调用最大执行时间需要5分钟然后停止。 有趣的是,它增加了6-7千条记录。 这意味着输入实际上已经完成,并且几乎成功。 我还尝试将文件中的数据量减半。 然而,没有任何改变。

现在显然有些不对劲。 当简单数据导入不起作用时,必须使用php脚本中的数据进行播放是非常烦人的。

更改您的PHP上传最大大小。

你知道你的php.ini文件在哪里吗?

首先,尝试将此文件放入您的Web根目录:

phpinfo.php

(见http://php.net/manual/en/function.phpinfo.php

含:

<?php

phpinfo();

?>

然后导航到http://www.yoursite.com/phpinfo.php

寻找“php.ini”。

要上传大文件,您需要max_execution_time,post_max_size,upload_max_filesize

另外,你知道你的error.log文件在哪里吗? 希望能给你一个关于出了什么问题的线索。

编辑:

这是我用于文件导入的查询:

$query = "LOAD DATA LOCAL INFILE '$file_name' INTO TABLE `$table_name` FIELDS TERMINATED BY ',' OPTIONALLY
    ENCLOSED BY '\"' LINES TERMINATED BY '$nl'";

其中$ file_name是来自php全局变量$ _FILES的临时文件名,$ table_name是已准备好导入的表,$ nl是csv行结尾的变量(默认为windows行结尾但我有选择选择linux行)结局)。

另一件事是我的脚本中的表($ table_name)是事先准备好的,首先扫描csv以确定列类型。 在确定适当的列类型后,它会创建MySQL表以接收数据。

我建议你首先尝试创建MySQL表定义,以匹配文件中的内容(数据类型,字符长度等)。 然后尝试上面的查询,看看它运行的速度有多快。 我不知道MySQL表定义对速度有多大影响。

此外,在加载数据之后,我没有在表中定义索引。 索引会减慢数据加载速度。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM