我有一个很长的列表在纯文本,我需要插入到表我的数据库。我是否必须手动输入纯文本文档的每一行,或者是否有一种方法可以使用查询将长列表插入表中的独立行?
我有一个表,有2列,id和club_name, club_name是列表,这是一个记事本文档的纯文本。
您可以使用LOAD DATA
,例如:
mysql> LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet
-> LINES TERMINATED BY 'rn';
你也可以使用多行插入语法(如果你使用的是InnoDB表),像这样:
INSERT INTO yourtable VALUES (1,2), (5,5), ...
您可以使用LOAD DATA INFILE
命令将数据加载到mysql。
这是文档…http://dev.mysql.com/doc/refman/5.1/en/load-data.html
$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 . "'");
}
}
这是一个基于PDO的快速示例,但是如果你不需要操作源数据(trim, normalize等),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));
}
安东尼。下面是如何使用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.
将记事本的全部内容插入到text类型的列