如果存在其他更新,则从文件插入更新mysql

时间:2012-02-24 13:40:38

标签: php mysql

我有一个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中执行此操作??? (我想从文本文件中插入值)

1 个答案:

答案 0 :(得分:1)

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

  1. 名称上的UNIQUE
  2. 年龄是空的
  3. 以下查询将满足您的需求:

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