2009-11-20 22 views
7

Bu yüzden, bazı veri doğrulama kontrollerini çalıştırmak ve sonuçları geri getirmek için verileri genellikle tutma tablolarına yüklemeliyim. Normalde, tutma tablosunu, ardından bir sqlldr kontrol dosyasını oluşturup verileri tabloya yüklerim, sonra sorgularımı çalıştırırım. Bunun yerine bir şey için harici tablo kullanmamın bir nedeni var mı? Hayatımı nasıl kolaylaştırırlar?Harici Tablolar vs SQLLoader

cevap

13

Dış tabloların en büyük avantajı, bunları SQL kullanarak veritabanının içinden sorgulayabilmemizdir. Bu nedenle, doğrulama tablolarını bir bekletme tablosuna gerek kalmadan SELECT ifadeleri olarak çalıştırabiliriz. Benzer şekilde, yüklenen verilerin bazı manipülasyonlarını yapmamız gerekirse, bunu SQLLDR komutlarından ziyade SQL ile yapmak neredeyse her zaman daha kolaydır. DBMS_JOB/DBMS_SCHEDULER yordamları ile veri yüklerini de yönetebiliriz, bu da kabuk komut dosyaları ve cron işlerine olan ihtiyacı azaltır. Bununla birlikte, SQLLDR kullanarak zaten olgun ve istikrarlı bir süreciniz varsa, bu durumda, dış tablolara taşınmanın muazzam faydalarını fark etmenin olası olmadığına katılıyorum. Bazı durumlarda, özellikle de milyonlarca satır yüklüyorsanız, SQLLDR yaklaşımının çok daha hızlı olabileceği durumlar da vardır. Howver, fark, veritabanının daha yeni sürümleriyle işaretlenmiş olmayacak. SQLLDR'nin sonuçta dış tabloların lehine sonuçlanacağını bekliyorum. Bir yük daha hızlı olabilir harici tablo defalarca birden sorgularda kullanılan olacak olursa

+1

+1, tüm iyi noktalar. – DCookie

3

Dış Masa sözdizimi bakarsak, bu şüpheyle

:-) SQL * Loader denetim dosyası sözdizimi benziyor Tablo (her zaman yaptığınız gibi), her bir sorgu için harici tablonuzu yeniden taramak yerine. @APC notları gibi, Oracle, DB sürüm YMMV'ye bağlı olarak, bunlarda iyileştirmeler yapıyor.

+1

Şüphesiz benzer, ancak eşdeğer değil. :) http://stackoverflow.com/questions/898872/oracle-external-tables-advanced-flat-file-layout –

+0

İyi nokta. SQL * Loader kodunun en azından başlangıçtaki dış tabloların arkasında ne kadar olduğunu merak ediyorum ... – DCookie

+0

@DCookie. Aynı takım tarafından geliştirildi :) – BobC

3

Dış tabloları esneklikleri için kullanırdım.

O

Paralel sorgu kolaydır ... Farklı dosyasını alter table ... location ('my_file.txt1','myfile.txt2')

Sen, bir ardışık fonksiyonu vb aracılığıyla çalıştırmak birleştirir, multitable ekler yapabilirsiniz olmaları nedeniyle onlara veri kaynağını değiştirmek daha kolaydır. ..

Ayrıca daha iyi bağımlılıkları kurar

...

otomatik olarak yedeklenir böylece kod veritabanında saklanır ...

0

Dış tablolarla yapabileceğiniz başka bir şey de sıkıştırılmış dosyaları okuyor. Dosyalarınız gzip olarak sıkıştırılmışsa, dosyaları okunurken sıkıştırmak için PREPROCESSOR yönergesini harici tablonuzun tanımında kullanabilirsiniz.