我有一个mysql表(my_table),它有3列(Name,Age,Place)。我有一个新的文本文件(data.txt选项卡分隔的数据文件),它有两列(名称和地点)。我想将文件"data.txt"中的信息插入到my_table中,条件是如果Name相同(在mysql表和文本文件"data.txt"中),则更新行(在第三列插入Place值),否则创建新行(其中Age将为NULL)。
if NAME_my_tabe== Name_data.txt --> update this row (do Place_my_tabe = Place_data.txt)
if Name_data.txt not present in my_tabe --> create new row (do Name_my_table=Name_data.txt, Age_my_table=NULL, Place_my_tabe = Place_data.txt)
如何在mysql中做到这一点???(我想插入文本文件中的值)
首先,确保您的表包含以下内容:
- 名称上的唯一性
- 年龄是可忽略的
以下查询将满足您的需要:
INSERT INTO my_table SET name = 'Name', place = 'Place'
ON DUPLICATE KEY UPDATE place = 'New Place'
有了读取文件的代码,您可以使用:
$file = new SplFileObject('data.txt');
while($file->eof() === true) {
$line = $file->fgets();
$data = explode("'t", $line);
// execute query:
$query = sprintf(
"INSERT INTO my_table SET name = '%1$s', place = '%2$s' ON DUPLICATE KEY UPDATE place = '%2$s'",
$data[0], // escape this
$data[1] // escape this
);
}
请注意,您需要使用mysql客户端库来执行该查询。