2014-01-25 2 views
0

Я получаю данные Twitter по моему запросу каждые 3 часа. Одним из полей является url. Для каждого URL у меня есть значение retweet_count.Обновление данных таблицы оптимальным образом

Иногда в следующие 3 часа я получаю аналогичные записи URL-адресов, как и раньше. Но retweet_count поставляется с обновленным новым значением.

В каждом запросе я получаю около 200 URL-адресов.

Один из способов во время каждой вставки я проверяю, существует или нет url. Если нет, тогда вставьте напрямую. Если он уже существует, выберите предыдущее значение rt_count и сравните его с более новым, если оно отличается, а затем обновите его.

Постепенно мои данные будут расти до недостатка записи в таблице. Если вышеприведенный случай займет слишком много времени.

Есть ли лучший способ сделать это? любое оптимистическое решение для этого?

$insertQuery2 = "INSERT INTO frrole_article_sentiment (`url`, `sentiment`, `title` , `time` , `img_url` , `rt_count` , `tweet_count`, `today`, `youtube_url`, `hash`) VALUES ('".$url."','".$sentiment."','".$title."','".$time."','".$img_url."','".$rt_count."','".$tweet_count."','".$today."', '".$is_youtube."', '".$hash."')"; 

        if (!mysqli_query($con,$insertQuery2)) 

        { 

         //die('Error: ' . mysqli_error($con)); 

        } 
+0

Ваш вопрос трудно понять. Это правда: каждые 3 часа вы выполняете запрос MySQL, а в результирующем наборе есть как минимум 2 поля: 'URL' и' retweet_count'? _ (Если это так, поделитесь запросом) _ Затем через 3 часа вы запустите тот же запрос, и иногда возвращается такое же поле 'URL', но с другим значением' retweet_count'. Вы хотите вставить в ** frrole_article_sentiment **, когда строка в наборе результатов, которую вы только что запросили, имеет значение «URL», которое не находится в ** frrole_article_sentiment **. Если это значение 'URL' есть, то обновите его? – AgRizzo

ответ

1

Поскольку вы используете MySQL, вы можете использовать ON DUPLICATE KEY UPDATE особенность: http://dev.mysql.com/doc/refman/5.7/en/insert-on-duplicate.html

Ваш запрос станет что-то вроде:

INSERT INTO frrole_article_sentiment (url, rt_count) 
VALUES('$url', '$rt_count') 
ON DUPLICATE KEY UPDATE rt_count=$rt_count; 

("URL" предполагается PK, запрос сокращенно для простоты, вы должны включить все поля)

+0

спасибо, будет ли эта вставка обновлять существующие 'url' и' rt_count' тоже? –

+1

В него войдет запись, в которой нет дубликата «url», иначе он просто обновит значение rt_count, но см. Документацию на mysql.com для полной ссылки –

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