Birleştirme
Merge öneki, yüklenen tablonun başka bir tabloyla birleştirilmesi gerektiğini belirtmek için koddaki bir LOAD veya SELECT deyimine eklenebilir. Bu ayrıca, bu deyimin bir kısmi yeniden yüklemede çalıştırılması gerektiğini belirtir.
Tipik kullanım durumu, bir değişiklik günlüğü yüklediğiniz ve bunu kullanarak inserts, updates ve deletes öğesini var olan bir tabloya uygulamak istediğiniz zamanlardır.
Syntax:
Merge [only] [(SequenceNoField [, SequenceNoVar])] On ListOfKeys [Concatenate [(TableName)]] (loadstatement | selectstatement)
Normal (kısmi olmayan) bir yeniden yükleme sırasında, Merge LOAD yapısı normal bir Load deyimi olarak (ancak eski kayıtları ve silinmek üzere işaretlenmiş kayıtları kaldırma işlevselliği ile) çalışacaktır. Load ifadesinin ilk alanı işlemle ilgili bilgileri içermelidir: Insert, Update veya Delete.
Yüklenen her kayıt için, kayıt tanımlayıcısı önceden yüklenen kayıtlarla karşılaştırılır ve yalnızca en son kayıt (sıra numarasına göre) saklanır. En son kayıt Delete ile işaretlenmişse hiçbiri saklanmaz.
Concatenate öneki kullanılıyorsa veya aynı alan kümesine sahip bir tablo varsa, bu, değiştirilecek ilgili tablo olacaktır. Aksi takdirde, Merge LOAD yapısının sonucu yeni bir tabloda depolanacaktır.
Concatenate Concatenate öneki kullanılırsa, oluşan tabloda Merge girdisi olarak kullanılan değişiklik günlüğünden daha fazla alan olabilir.
Kısmi yeniden yükleme, tam yeniden yükleme ile aynı şeyi yapar. Tek fark, Merge LOAD yapısının asla yeni bir tablo oluşturmamasıdır. Her zaman önceki kod yürütme işleminden, değiştirilecek ilgili bir tablo vardır.
Yüklenen değişiklik günlüğü birikmiş bir günlükse, yani zaten yüklenmiş olan değişiklikleri içeriyorsa, SequenceNoVar parametresi, giriş verilerinin miktarını sınırlamak için bir Where cümlesinde kullanılabilir. Merge LOAD daha sonra yalnızca SequenceNoField alanının şundan büyük olduğu kayıtları yüklemek için yapılabilir: SequenceNoVar. Tamamlandıktan sonra, Merge LOAD, SequenceNoVar için SequenceNoField alanında görülen maksimum değere sahip yeni bir değer atayacaktır.
Arguments:
Bağımsız Değişken | Açıklama |
---|---|
only | Deyimin sadece kısmi yeniden yüklemeler sırasında yürütülmesi gerektiğini belirten isteğe bağlı bir niteleyici. Normal (kısmi olmayan) yeniden yüklemeler sırasında dikkate alınmamalıdır. |
SequenceNoField | Bir zaman damgası içeren alanın adı veya işlemlerin sırasını tanımlayan bir sıra numarası. |
SequenceNoVar |
Birleştirilmekte olan tablonun SequenceNoField öğesi için maksimum değerin atandığı değişkenin adı. |
ListOfKeys | Birincil anahtarı belirten, virgülle ayrılmış alan adları listesi. |
operation | Load ifadesinin ilk alanı işlemi içermelidir: Insert, Update veya Delete. "i", "u" ve "d" öğesi de kabul edilir. |
Example: Veri kod dosyası
Bu örnekte, Persons adlı bir satır içi tablo dört satırla yüklenir. Merge ardından tabloyu şu şekilde değiştirir:
- Mary, 4 satırını ekler
- Steven, 3 satırını siler
- Jake'e 5 sayısını atar
Merge yürütüldükten sonra LastChangeDate değişkeni ChangeDate sütunundaki maksimum değere ayarlanır.
Merge yüklemesinden sonra, oluşan tablo şu şekilde görünür:
Name | Number |
---|---|
Jake | 3 |
Jill | 2 |
Steven | 3 |
Merge yüklemesinden sonra, tablo şu şekilde görünür:
ChangeDate | Name | Number |
---|---|---|
2/1/2021 | Jake | 5 |
- | Jill | 2 |
1/1/2021 | Mary | 4 |
Veriler yüklendiğinde, yapılan işlemler Veri yükleme ilerlemesi iletişim kutusunda gösterilir.
Example: Veri yükleme komut dosyası - Kısmi yeniden yükleme
Aşağıdaki örnekte, Only bağımsız değişkeni Merge komutunun yalnızca kısmi yeniden yükleme sırasında yürütüleceğini belirtir. Güncellemeler daha önce yakalanan LastChangeDate'e göre filtrelenecektir. Merge tamamlandıktan sonra, LastChangeDate değişkenine, birleştirme sırasında işlenen ChangeDatesütununun maksimum değeri atanacaktır.