1

我有一个很长的纯文本列表,我需要将其插入到我的数据库表中。我是否必须手动输入纯文本文档的每一行,或者有没有办法使用查询将长列表插入到表中的独立行中?

我有一个有 2 列的表,id 和 club_name,club_name 是记事本文档中的纯文本列表。

4

6 回答 6

3

您可以使用LOAD DATA,例如:

mysql> LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet
-> LINES TERMINATED BY '\r\n';

您还可以使用多行插入语法(如果您使用 InnoDB 表),如下所示:

INSERT INTO yourtable VALUES (1,2), (5,5), ...
于 2013-06-21T09:16:41.937 回答
0
    $file = file("content.txt"); //read file line by line
    foreach ($file as $val) {
        if (trim($val) != '') { //ignore empty lines
            mysql_query("INSERT INTO xxx SET club='" . $val . "'");
        }
    }
于 2013-06-21T09:20:28.937 回答
0

LOAD DATA INFILE您可以使用该命令将数据加载到 mysql 中。

这是文档... http://dev.mysql.com/doc/refman/5.1/en/load-data.html

于 2013-06-21T09:16:15.730 回答
0

这是一个基于PDO的快速示例,但如果您不需要操作源数据(修剪、规范化等),MySQL 的LOAD DATA INFILE命令可能是一个更好的选择。

<?php
$conn = new PDO($dsn, $username, $password);
$stmt = $conn->prepare('INSERT INTO table VALUES (NULL, ?)');
foreach(file('list.txt') as $club) {
    $stmt->execute(array($club));
}

安东尼。

于 2013-06-21T09:23:03.087 回答
0

以下是如何使用 php、mysqli 和一个每个条目都在一行的文本文件:

<?php
$servername = "localhost";
$username = "user";
$password = "pass";
$dbname = "db";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
$file = file("list.txt"); //read file line by line
    foreach ($file as $val) {
        if (trim($val) != '') { //ignore empty lines
            $sql = "INSERT INTO `db`.`table` (`column`) VALUES ('$val');";
            if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}
        }
    }
    ?>

这是基于 DanFromGermany 的回答,但更新为使用 mysqli。

于 2016-11-29T08:54:19.420 回答
-1

将整个记事本内容插入“文本”类型的列

于 2013-06-21T09:15:48.717 回答