Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да моделирам данни, които бавно се променят с времето?

Имах подобен проблем - големи плоски файлове се импортират в базата данни веднъж на ден. Повечето от данните са непроменени.

Добавете две допълнителни колони към таблицата, начална_дата и крайна_дата. Стойността по подразбиране за ending_date трябва да бъде някъде в бъдещето.

За да сравните един файл със следващия, сортирайте ги и двата по ключовите колони, след което прочетете един ред от всеки файл.

  • Ако ключовете са еднакви:сравнете останалите колони, за да видите дали данните са се променили. Ако данните в реда са равни, редът вече е в базата данни и няма какво да се прави; ако е различен, актуализирайте съществуващия ред в базата данни с крайна_дата от днес и вмъкнете нов ред с начална_дата от днес. Прочетете нов ред от двата файла.
  • Ако ключът от стария файл е по-малък:редът е изтрит. Актуализирайте ending_date до днес. Прочетете нов ред от стария файл.
  • Ако ключът от новия файл е по-малък:вмъкнат е ред. Вмъкнете реда в базата данни с начална_дата днес. Прочетете нов ред от новия файл.

Повторете, докато прочетете всичко и от двата файла.

Сега, за да направите заявка за редовете, които са били валидни на която и да е дата, просто изберете с клауза where test_date между start_date и end_date.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Системни бази данни на SQL Server – Поддръжка на MSDB

  2. Каква е целта на използването на OPTION(MAXDOP 1) в SQL Server?

  3. Вземете стойност на колона от низ име на колона sql

  4. SUBSTRING() и шестнадесетична стойност

  5. Създайте персонализирано съобщение за грешка в ограниченията за проверка в SQL SERVER 2008