使用PHP将多个文本文件导入数据库表单元格

时间:2015-09-03 06:22:22

标签: php mysql recursion import

我试图将多个文本文件的内容传输到MySQL中。这些文件按顺序命名为1.txt2.txt3.txt ... 13381.txt。基本上,每个文件都是一个HTML文档,没有所有标题,元数据等被删除,只剩下内容。

我还制作了一个包含IDCONTENT列的表格。 ID是自动递增的。我希望这些文件的内容能够进入CONTENT列的单元格,如下所示:

1.txt -> row 1
2.txt -> row 2
3.txt -> row 3
etc.

只搜索导致我从CSV和其他表格形式的数据导入数据。我总是可以打开每个文件并从那里复制粘贴到像phpmyadmin这样的东西,但这似乎是一件单调乏味的事情,因为有数以千计的数据文件可以通过。

我想知道是否有一种简单的方法可以使用PHP和某种递归循环来获取文件内容,然后更新数据库。我已经进行了一些实验,但我似乎已经超越了平庸的编程技巧。有人在乎帮忙吗?在此先感谢:)

2 个答案:

答案 0 :(得分:2)

使用PDO这样的东西...

<?php
$host = 'localhost'; $db = 'database-name'; $user = 'database-user-name'; $pw = 'database-password';
$conn = new PDO('mysql:host='.$host.';dbname='.$db.';charset=utf8', $user, $pw);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$i = 0;
do {
    $i = $i+1;
    $txt = file_get_contents("$i.txt");

try {
    $sql = "INSERT INTO table (CONTENT) VALUES (:txt)";
    $stmt = $conn->prepare($sql);
    $stmt->bindValue(':txt', $txt, PDO::PARAM_STR);
    $stmt->execute();
} catch (PDOException $e) {
    die("Could not complete the insert for ".$i.".txt " . $e->getMessage()); // this will tell you which of your text files caused the error
}

} while ($i <= 13381); // close for loop

echo('All Done!');
?>

希望这有帮助。

答案 1 :(得分:0)

    <?php
    try {
        $instance = new PDO("mysql:host=127.0.0.1;dbname=nameofdatabase;charset=utf8", $user, $pass, array(PDO::ATTR_PERSISTENT => true));
        $instance->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $instance->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);


    $stmt = $instance->prepare('INSERT INTO tablename SET CONTENT=:con');

    for ($i = 1; $i <= 13381; $i++)
    {
    $con = file_get_contents("/path/to/files_dir/$i.txt");
    $stmt->bindValue(':con', $con, PDO::PARAM_STR);
    $stmt->execute();
    }
}
    catch(PDOException $ecx) {}

OR 您可以在mysql循环

中使用LOAD DATA INFILE php语句