2013-05-11 4 views
0

У меня есть таблица, которую я регулярно обновляю, вставляя файл csv, который сбрасывается из другого источника. Этот файл содержит текущие данные в моей таблице, а также новые данные. То, что я в настоящее время сделать, это удалить содержимое таблицы, которые относятся к свалке данных и реимпорта, используя следующий скрипт:Вставить ГДЕ НЕ СУЩЕСТВУЕТ

if(isset($_POST['submit'])) 
{ 
$file = $_FILES['file']['tmp_name']; 

$handle = fopen($file,"r"); 

while(($fileop = fgetcsv($handle,1000, ",")) !== false) 
{ 
    $player_id = $fileop[1]; 
    $fixture_id = $fileop[3]; 
    $opponent = $fileop[6]; 
    $home_away = $fileop[7]; 
    $team_id = $fileop[8]; 
    $season_id = $fileop[9]; 
    $fixture_date = $fileop[11]; 
    $runs = $fileop[15]; 
    $sixes = $fileop[17]; 
    $fours = $fileop[16]; 
    $how_out = $fileop[25]; 
    $wk_catches = $fileop[26]; 
    $fielder_catches = $fileop[27]; 
    $fielder_stumpings = $fileop[28]; 
    $_fielder_runouts = $fileop[29]; 
    $wickets = $fileop[30]; 
    $bowling_runs = $fileop[31]; 
    $balls_bowled = $fileop[32]; 
    $maidens = $fileop[33]; 
    $bowled = $fileop[37]; 
    $caught = $fileop[38]; 
    $lbw = $fileop[39]; 
    $stumped = $fileop[40]; 
    $position = $fileop[47]; 

    $sql= mysql_query("INSERT INTO stats_game (player_id, fixture_id, opponent, home_away, team_id, season_id, fixture_date, runs, fours, sixes, how_out, wk_catches, fielder_catches, fielder_stumpings, _fielder_runouts, wickets, bowling_runs, balls_bowled, maidens, bowled, caught, lbw, stumped, position) VALUES ('$player_id', '$fixture_id', '$opponent', '$home_away', '$team_id', '$season_id', '$fixture_date', '$runs', '$fours', '$sixes', '$how_out', '$wk_catches', '$fielder_catches', '$fielder_stumpings', '$_fielder_runouts', '$wickets', '$bowling_runs', '$balls_bowled', '$maidens', '$bowled', '$caught', '$lbw', '$stumped', '$position') WHERE NOT EXISTS (SELECT * from stats_game)"); 
} 
if($sql){ 
    echo 'data uploaded successfully';}else{ 
     die(mysql_error()); 
} 
} 

?> 

То, что я действительно хочу сделать, это просто вставить данные, которые в настоящее время не exsit в таблице. Я пытался сделать это с помощью добавления:

WHERE NOT EXISTS (SELECT * from stats_table) 

но это бросает синтаксическую ошибку ...

Не могли бы вы предложить способ сделать это.

+0

Итак, вы хотите проверить точный дубликат, который соответствует всем столбцам? – zerkms

+0

Да, поскольку дамп данных не имеет первичного ключа, и все столбцы могут иметь повторяющиеся значения – user1873931

ответ

Смежные вопросы