PhpMyAdmin数据导入性能问题

时间:2012-05-13 01:21:57

标签: mysql performance phpmyadmin file-import

最初,我的问题与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脚本中的数据进行操作非常烦人。

1 个答案:

答案 0 :(得分:4)

更改您的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 line endings)。

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

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

另外,在加载数据之后,我没有在表中定义索引。索引会降低数据加载速度。