我有一个mysql表(my_table),它有3列(Name,Age,Place)。我有一个新的文本文件(data.txt选项卡分隔数据文件),它有2列(名称和地点)。我希望将文件“data.txt”中的信息插入到my_table中,条件是Name相同(在mysql表和文本文件“data.txt”中)更新行(在第3列中插入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中执行此操作??? (我想从文本文件中插入值)
答案 0 :(得分:1)
首先,请确保您的表格包含以下内容:
以下查询将满足您的需求:
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客户端库执行该查询。