如何将文本文件中的逐行内容插入到mysql数据库中?

时间:2009-07-26 09:24:04

标签: php

我有一个包含这样的内容的文本文件

bob
james
diva
games
library
info

我想知道如何编写一个逐行读取文件的php脚本,并将数据逐行插入数据库作为每行的新行?

感谢

5 个答案:

答案 0 :(得分:3)

根据文件的大小,您可以使用几种方法。

  1. 使用MySQL - mysql可以使用LOAD DATA [LOCAL] INFILE直接导入CSV文件

  2. PHP(小文件):使用file()将文件加载到数组中。循环遍历数组并插入每一行

  3. PHP(大文件):使用fgets()一次循环一行文件。使用它来构建批量插入查询(INSERT INTO ... VALUES (1), (2), (3)

答案 1 :(得分:2)

这样的事情应该有效:

$fh = fopen('file.txt','r');
$db =  new PDO("mysql:host=$host;dbname=$database", $username, $password);
while (!feof($fh)) {
  $line = fgets($fh);
  $db->exec("INSERT INTO mytable(line) VALUES ('$line');");
}

答案 2 :(得分:1)

$conn = mysql_connect( 'localhost', 'root', 'password' );
if ( is_resource( $conn ) ) {
    if ( mysql_select_db('database', $conn) ) {
        $lines = file('file.txt')

        foreach ($lines as $line) {
            $query = mysql_query( 'INSERT INTO table (text) VALUES ( "' . $line . '" ) );
            if( !$query ) { die ('Error: ' . mysql_error(); ); }
        }
    }

}

答案 3 :(得分:0)

这是一个超简化的答案,但这里有一些基础知识:

$filename = "filename.txt";

while (!feof($fp)){
$string = fgets($fp, 1024); 
mysql_query("INSERT INTO <table> (<fieldname>) VALUES('$string')") 
}

答案 4 :(得分:0)

注意feof和plaintext,在阅读完最后一行后不要回复 并把你的循环无限

进行双重检查:S

while(!feof($fh)){
    $linha = fgets($fh,4096);
    if (!feof($fh)) { // doublecheck
        proccess what you need
    } else {fclose($fh); break 1;} // real eof
}

进行测试