最初,我的问题与 PhpMyAdmin 的 SQL 部分无法正常工作有关。正如评论中所建议的,我意识到输入量是无法处理的。但是,这并没有为我提供如何处理具有 (CSV) 格式的文件(在我的情况下为 35,000 条记录行)的有效解决方案:
...
20120509,126,1590.6,0
20120509,127,1590.7,1
20120509,129,1590.7,6
...
PhpMyadmin 中的导入选项就像 SQL 部分中的基本复制粘贴输入一样困难。这次和之前一样,需要 5 分钟直到调用最大执行时间,然后停止。有趣的是,它在表中添加了大约 6-7000 条记录。所以这意味着输入实际上已经通过并且几乎成功了。我还尝试将文件中的数据量减半。然而一切都没有改变。
现在显然出了什么问题。当简单的数据导入不起作用时,必须在 php 脚本中处理数据是非常烦人的。
更改您的 php 上传最大大小。
你知道你的 php.ini 文件在哪里吗?
首先,尝试将此文件放入您的网络根目录:
phpinfo.php
( see 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 文件在哪里吗?希望它能为您提供有关出了什么问题的线索。
EDIT:
这是我用于文件导入的查询:
$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表定义对速度有多大影响。
另外,在加载数据之前,我没有在表中定义索引。索引会减慢数据加载速度。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)