如何将文本文件插入数据库表mysql

时间:2014-01-26 14:17:28

标签: php mysql

我有一个batchcode.txt,其中包含批处理代码列表。

645863
302422
430307
821773
599738
671768
732159

等等

我的数据库中有一个名为batchcode的表,其中包含字段'id','batchcode'。

我的问题是它不会将我的文本文件插入到名为batchcode的表中。我已经完成了导入和选择表但没有任何作用...

我需要一些帮助,任何人都可以帮助我。

<?php
$host= "localhost";
$user= "root";
$pass= "";
$db="klayton";

$connect= mysql_connect($host,$user,$pass);
if (!$connect)die ("Cannot connect!");
mysql_select_db($db, $connect);

$file = fopen("batchcode.txt","r");  

while(! feof($file))
{
$sql = "INSERT INTO batchcode( batchcode ) VALUES ('fgets($file)')"; //Insert every read line from txt to mysql database
mysql_query($sql);
}
fclose($file);
?>

我收到一条错误消息“致命错误:第22行的C:\ xampp \ htdocs \ test \ index.php超出了30秒的最长执行时间”

2 个答案:

答案 0 :(得分:1)

如果php未处于安全模式,您可以使用max_execution_time

ini_set('max_execution_time', 0); //0 unlimited time, best to use a high number

每行一个查询不是一个好的想法。需要花费很长时间,因为每次插入后都会重建任何索引。您可以使用LOAD DATA LOCAL INFILE之类的:

LOAD DATA LOCAL INFILE 'C:\\bigfile.txt' INTO TABLE `database`.`batchcode` LINES TERMINATED BY '\r\n' (`batchcode `);

使用\ r \ n或\ n取决于您的文件。文件的路径必须是mysql客户端运行的位置。

答案 1 :(得分:1)

使用当前代码,函数fgets($file)将永远不会被执行,因此! feof($file)始终为true,而while循环将一直运行直到执行时间限制。

您应该重写插入查询,如下所示:

while( $batchcode = fgets($file) )
{
  $sql = "INSERT INTO batchcode( batchcode ) VALUES ('$batchcode')"; 
  mysql_query($sql);
}