PHP逐行解析大文件并在数据库中INSERT

时间:2013-12-14 07:39:22

标签: php mysql fgets

打开大的.txt文件然后逐行将其插入数据库中我遇到了一些麻烦。

这是我的代码:

$query = $db->prepare("INSERT INTO test (email, npai) VALUES (?, 1);");
if ($file) {
    while (($line = fgets($file)) !== false) {
        echo $line;
        $query->execute(array($line));
    }
    fclose($file);
}
else
{
    echo "Can't open the file";
    exit ;
}

问题是在1.xxx.xxx行之后插入脚本停止而没有任何错误消息。我多次尝试过我的脚本,它从来没有在同一行中它失败所以这不是一个特殊线的问题。这是一个50mo .txt文件,但在我有一些.csv文件大约500mo。

如果你有一些建议!

感谢。

2 个答案:

答案 0 :(得分:0)

如果您使用的是mysql,那么您只需使用

即可

LOAD DATA LOCAL INFILE 'path_to_text_file' INTO TABLE yourTableName LINES TERMINATED BY '\r\n';

从文本文件向表中插入数据。

在源文本文件中,值必须由制表符分隔,并按列列出的顺序给出。您可以使用\N来表示缺失值。

您可以找到更多信息here

答案 1 :(得分:0)

好的,所以我将display_errors设置为1,我收到一条错误消息:

致命错误:第50行的/Applications/MAMP/htdocs/EmailNinja/import/npai.php超出了30秒的最长执行时间

我终于使用: set_time_limit(0);

非常感谢