2012-02-24 84 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