Mysql PhpMyAdmin数据导入性能问题

Mysql PhpMyAdmin数据导入性能问题,mysql,performance,phpmyadmin,file-import,Mysql,Performance,Phpmyadmin,File Import,最初,我的问题与PhpMyAdmin的SQL部分工作不正常有关。正如评论中所建议的,我意识到输入的数量是无法处理的。然而,这并没有为我提供一个有效的解决方案,来解决如何处理在我的案例中有35000条CSV格式的记录行的文件: ... 20120509,126,1590.6,0 20120509,127,1590.7,1 20120509,129,1590.7,6 ... PhpMyadmin中的导入选项与SQL部分中的基本复制粘贴输入一样困难。这一次,与前面一样,需要5分钟才能调用最大执行时间

最初,我的问题与PhpMyAdmin的SQL部分工作不正常有关。正如评论中所建议的,我意识到输入的数量是无法处理的。然而,这并没有为我提供一个有效的解决方案,来解决如何处理在我的案例中有35000条CSV格式的记录行的文件:

...
20120509,126,1590.6,0
20120509,127,1590.7,1
20120509,129,1590.7,6
...
PhpMyadmin中的导入选项与SQL部分中的基本复制粘贴输入一样困难。这一次,与前面一样,需要5分钟才能调用最大执行时间,然后停止。有趣的是,它在表中添加了大约6-7千条记录。这意味着输入实际上通过了,并且几乎成功地完成了。我还尝试将文件中的数据量减半。然而,一切都没有改变


现在显然出了问题。当简单的数据导入不起作用时,必须在php脚本中处理数据,这非常烦人。

更改您的php上载最大大小

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

首先,尝试将此文件放入web根目录:

phpinfo.php

包含:

<?php

phpinfo();

?>
其中,$file_name是php全局变量$_FILES中的临时文件名,$table_name是已经准备好导入的表,$nl是csv行结尾的变量默认为windows行结尾,但我可以选择linux行结尾

另一件事是,我的脚本中的表$table_名称是通过首先扫描csv来确定列类型而预先准备好的。确定适当的列类型后,它将创建MySQL表来接收数据

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


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

更改php上载的最大大小

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

首先,尝试将此文件放入web根目录:

phpinfo.php

包含:

<?php

phpinfo();

?>
其中,$file_name是php全局变量$_FILES中的临时文件名,$table_name是已经准备好导入的表,$nl是csv行结尾的变量默认为windows行结尾,但我可以选择linux行结尾

另一件事是,我的脚本中的表$table_名称是通过首先扫描csv来确定列类型而预先准备好的。确定适当的列类型后,它将创建MySQL表来接收数据

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


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

好战的重新捕获者是好战的;你确定它正在上载以运行吗?听起来好像web界面的输入太大,无法上传到服务器。为什么不直接从PHP执行呢?嗯,现在我觉得问这个问题很愚蠢。但我记得从文件中添加数据时遇到问题。需要对此进行测试,并根据需要更新或删除答案。感谢您指出明显的问题。更新了问题的总体内容,以指出关键问题。最初的问题只不过是问题的一小部分;你确定它正在上载以运行吗?听起来好像web界面的输入太大,无法上传到服务器。为什么不直接从PHP执行呢?嗯,现在我觉得问这个问题很愚蠢。但我记得从文件中添加数据时遇到问题。需要对此进行测试,并根据需要更新或删除答案。感谢您指出明显的问题。更新了问题的总体内容,以指出关键问题。最初的问题只是问题的一部分。当我从php脚本执行一些查询时,会立即插入10k条记录。我进行了测试,它每秒增加约18k条记录。然而,它无法处理非常大的查询抛出错误:mysql服务器已经消失,所以我将10k记录分成部分插入,它做得非常好。当我尝试使用PhpMyAdmin从CVS/Excel文件导入时,脚本正在做一些事情,不确定如何准确地检查内容,5分钟后它将停止达到最大执行时间。我发现它向数据库中添加了6-7k行。我能告诉你的是:它必须达到数据插入状态,但无法完成。我猜,除了SQL之外,再上传一次的插件(10万块左右,但不是更多)不适合大数据块,但同样,这是不可能的。上传最大文件大小不是问题,文件太小了
比它更重要。关于post_max_size:如果它太大,它不会停止这个过程吗?一般来说,5分钟的时间是多少?为什么它不抛出一个错误,说某个变量被超过了?5分钟内有10k条记录是荒谬的:我在想,因为它正试图将所有数据添加到一个查询中,与我尝试的一样,但却出现了即时错误,从而将每个记录减少到10k,因此难以解决,但我觉得很奇怪,这么大规模项目的创建者竟然没有考虑上传大文件,也没有将它们分成更小的查询。我正在用超过2兆字节的csv文件测试我当前的PHP/MySQL程序。事实上,我想我甚至有一个是5或10兆。您正在尝试将所有数据加载到一个表中吗?如果是这样,则应使用“加载数据填充”方法。我使用它将数据放入原始表中。然后我在那里做进一步的处理。我使用的是PhpMyAdmin提供的,这显然不能正常工作。我可以很容易地使用一些自行编写的php脚本上传所有数据,我认为这将是一个解决方案。然而,这只是一个小小的不便,然而PhpMyAdmin在发布之前必须修复的bug非常令人恼火。当我从php脚本执行一些查询时,会立即插入10k条记录。我进行了测试,它每秒增加约18k条记录。然而,它无法处理非常大的查询抛出错误:mysql服务器已经消失,所以我将10k记录分成部分插入,它做得非常好。当我尝试使用PhpMyAdmin从CVS/Excel文件导入时,脚本正在做一些事情,不确定如何准确地检查内容,5分钟后它将停止达到最大执行时间。我发现它向数据库中添加了6-7k行。我能告诉你的是:它必须达到数据插入状态,但无法完成。我猜,除了SQL之外,再上传一次的插件(10万块左右,但不是更多)不适合大数据块,但同样,这是不可能的。上传最大文件大小不是问题,文件比它小很多。关于post_max_size:如果它太大,它不会停止这个过程吗?一般来说,5分钟的时间是多少?为什么它不抛出一个错误,说某个变量被超过了?5分钟内有10k条记录是荒谬的:我在想,因为它正试图将所有数据添加到一个查询中,与我尝试的一样,但却出现了即时错误,从而将每个记录减少到10k,因此难以解决,但我觉得很奇怪,这么大规模项目的创建者竟然没有考虑上传大文件,也没有将它们分成更小的查询。我正在用超过2兆字节的csv文件测试我当前的PHP/MySQL程序。事实上,我想我甚至有一个是5或10兆。您正在尝试将所有数据加载到一个表中吗?如果是这样,则应使用“加载数据填充”方法。我使用它将数据放入原始表中。然后我在那里做进一步的处理。我使用的是PhpMyAdmin提供的,这显然不能正常工作。我可以很容易地使用一些自行编写的php脚本上传所有数据,我认为这将是一个解决方案。然而,这只是一个小小的不便,然而PhpMyAdmin有一些在发布之前必须修复的bug,这是非常恼人的。