Есть ли способ «обновить» существующую таблицу новым списком пользователей, чем выполнять весь запрос для ежедневной замены таблицы? - PullRequest
1 голос
/ 26 апреля 2019

Я выполняю запрос в задании, которое ежедневно обновляет список пользователей в MS SQL.Запрос ниже выполняется каждый день для обновления данных

if object_id('report.dbo.data') is not null    
drop table report.dbo.data
 SELECT
 UserID,
date
into report.dbo.data
 from data a
 where date >= '2019-01-01'
 and date < getdate()

Цель этого запроса - ежедневно обновлять список пользователей.Проблема здесь в том, что ежедневный запуск занимает больше времени.

Например, у меня могут быть данные до 20.04.2009.Поскольку я запускаю его каждый день, данные запускаются снова с 01/01/2019 по 25/04/2019, а не просто обновляются с новыми идентификаторами пользователей с 20/04/2019 - 04/25/2019.

Можете ли выпомогите мне с примером кода, который обновляет report.dbo.data с новыми данными, чем запускать весь код для обновления всех данных?

Ответы [ 2 ]

1 голос
/ 26 апреля 2019

Ваш код удаляет и воссоздает всю таблицу, а не только ее данные (содержимое). Давайте создадим пустую таблицу report.dbo.data, если она не существует, и добавим только новые данные.

if object_id('report.dbo.data') is null
    SELECT UserID, date into report.dbo.data from data a where 1=0  -- create empty table if needed

insert into report.dbo.data(UserID, date)     -- append new data
    (SELECT UserID, date from data a where date > (select max(date) from data) and date < getdate())
0 голосов
/ 26 апреля 2019

Вместо жесткого кодирования дата как '2019-01-01' pass max(date) from data.

Insert into  report.dbo.data
SELECT UserID, date from data a where date >= (select max(date) from data ) and date < getdate()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...