2012-02-24 88 views
0

我有一个MySQL表(my_table),它有3列(名称,年龄,地点)。我有一个新的文本文件(data.txt选项卡分隔数据文件),它有2列(名称和地点)。如果Name相同(在mysql表和文本文件“data.txt”中)更新行(在第3列中插入Place值),我想从文件“data.txt”中将信息插入到my_table中,否则创建新行其中年龄将为NULL)。从文件插入MySQL更新如果存在其他更新

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中做到这一点??? (我要插入的文本文件中的值)

回答

1

首先,请确保您的表包含以下内容:

  1. 独特的名称
  2. 年龄为空

以下查询将做你所需要的:

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客户端库执行该查询。

+0

怎么样的文本文件data.txt?如何指定从这个文件中获取数据? – 2012-02-24 14:00:28

+0

你可以为此打开一个新问题(或更新这个问题),确保告诉你的文件是如何格式化的 - 否则我们将无法提供帮助。 – 2012-02-24 14:04:44

+0

我试图编辑问题..希望现在它更有意义。感谢您的努力 – 2012-02-24 14:17:52