2012-02-24 9 views
0

私は3列(名前、年齢、場所)を持つmysqlテーブル(my_table)を持っています。私は2つの列(名前と場所)を持っている新しいテキストファイル(data.txtタブのデータファイルを区切って)があります。 Nameが同じ(mysqlテーブルとテキストファイル "data.txt")の場合は、行を更新する(3番目の列に値を挿入)、そうでない場合は新しい行を作成するという条件付きで、 "data.txt"ファイルから情報をmy_tableに挿入したいAgeは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. 年齢は、次のクエリ

NULLABLEであります

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はどうですか?このファイルからテイクデータを指定する方法は? –

+0

新しい質問を開いたり、この質問を更新したりすることができます。ファイルがどのようにフォーマットされているかを確認してください。そうしないとヘルプが表示されません。 –

+0

質問を編集しようとしましたが、今はもっと意味があると思います。あなたの努力をありがとう –

関連する問題