2016-11-15 2 views
0

я загрузил все содержимое из TableA, где TableA имеет поле под названиемSQL-Обновление с предыдущего дня

CreatedDate(DateTime) 

Я скопирована только содержание этой таблицы, которые имеют на самом деле полезность.

Вместо того, чтобы использовать агент SQL для планирования задания для копирования этой таблицы каждую ночь, я хотел бы добавить данные и добавить только новые данные и, возможно, внести некоторые обновления, которые могли быть затронуты в последний день.

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

Я думал о выполнении следующего SQL в предложении где:

CreatedDate between getdate()-1 and getdate() 

Это лучший способ сделать это?

Спасибо

+1

Вы можете получить «MAX (CreatedDate)» предыдущего запуска? Если это возможно, вы можете использовать это в своем предложении where, например 'CreatedDate> MAX (CreatedDate)'. – wdosanjos

+0

AS wdosanjos указал, что получение MAX (CreateDate) вашей целевой таблицы поможет вам определить ваш нижний диапазон, а затем использовать GETDATE() как верхние работы. Единственное, что это поможет вам идентифицировать НОВЫЕ записи, но вы также указали на необходимость поиска изменений, можно ли обновлять записи? Если вам нужен индикатор версии или другой столбец, который указывает, что возможно что-то вроде UpdateDate, существует ли 1? Afterwords 2 операции Update и Insert довольно легко, и хотя я не рекомендую его персонализировать, так как может возникнуть сложная проблема с ним MERGE() также может использоваться – Matt

ответ

0

Это именно та ситуация, что SSIS построен для. По существу, вы хотите загружать только новые данные каждый день, а в процессе ETL это называется incremental load.

Лучшим способом достижения желаемого результата является создание ETL, чтобы он только захватил данные, где MaxDateTime> CreatedDate (или ModifiedDate, предположив, что у вас есть этот столбец, и вы хотите включить обновления предыдущих данных). Если ваш CreateDate не изменился, если предыдущие данные были изменены, вам нужно будет добавить поиск и условное разделение для прохождения данных.

Затем вы должны создать задание агента SQL для ежедневного запуска инкрементального ETL.

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