Często muszę ładować dane do tabel trzymania, aby przeprowadzić sprawdzanie poprawności danych, a następnie zwrócić wyniki. Zazwyczaj tworzę tabelę przechowywania, następnie plik kontrolny sqlldr i ładuję dane do tabeli, a następnie uruchamiam moje zapytania. Czy jest jakiś powód, dla którego powinienem używać zewnętrznych tabel dla rzeczy? W jaki sposób ułatwią mi życie?Tabele zewnętrzne vs SQLLoader
Odpowiedz
Dużą zaletą zewnętrznych tabel jest to, że możemy je odpytać z poziomu bazy danych za pomocą SQL. Możemy więc po prostu uruchomić sprawdzanie poprawności jako instrukcje SELECT bez potrzeby trzymania tabeli. Podobnie, jeśli potrzebujemy manipulować załadowanymi danymi, prawie zawsze łatwiej jest to zrobić za pomocą poleceń SQL niż poleceń SQLLDR. Możemy również zarządzać ładowaniem danych za pomocą procedur DBMS_JOB/DBMS_SCHEDULER, co dodatkowo ogranicza potrzebę stosowania skryptów powłoki i zadań cron.
Jednakże, jeśli masz już dojrzały i stabilny proces za pomocą SQLLDR, to przyznaję, że jest mało prawdopodobne, że uzyskasz ogromne korzyści z przenoszenia na zewnętrzne tabele.
Jest także kilka przypadków - szczególnie, jeśli ładujesz miliony rzędów - gdzie metoda SQLLDR może być znacznie szybsza. Jakkolwiek, różnica nie będzie oznaczona nowszymi wersjami bazy danych. W pełni oczekuję, że SQLLDR zostanie ostatecznie wycofany na rzecz zewnętrznych tabel.
Jeśli spojrzeć na składni tabela zewnętrzna, wygląda podejrzanie jak SQL * Loader plików kontrola składni :-)
Jeśli tabela zewnętrzna ma być wielokrotnie używane w wielu zapytań może być szybciej załadować tabeli (tak jak teraz) zamiast przeszukiwać zewnętrzną tabelę dla każdego zapytania. Jak zauważa @APC, Oracle wprowadza w nich ulepszenia, więc w zależności od wersji DB YMMV.
Podejrzanie podobne, ale nie równoważne. :) http://stackoverflow.com/questions/898872/oracle-external-tables-advanced-flat-file-layout –
Dobra uwaga. Zastanawiam się, ile kodu SQL * programu ładującego znajdowało się za co najmniej początkowym krokiem w zewnętrznych tabelach ... – DCookie
@DCookie. Jest rozwijany przez ten sam zespół :) – BobC
Używałbym zewnętrznych stołów dla ich elastyczności.
Łatwiej zmodyfikować źródło danych na nich być inny plik alter table ... location ('my_file.txt1','myfile.txt2')
Można zrobić multitable wkładki, scala, uruchom go poprzez potokowym funkcji etc ...
zapytania równoległy jest łatwiejsze. ..
ustanawia także zależności lepiej ...
Kod jest przechowywany w bazie danych, więc wycofał się automatycznie w górę ...
Inną rzeczą, którą można zrobić za pomocą zewnętrznych tabel, są odczytywane skompresowane pliki. Jeśli na przykład pliki są skompresowane przy użyciu gzip, możesz użyć dyrektywy PREPROCESSOR w definicji zewnętrznej tabeli, aby rozpakować pliki podczas ich odczytu.
- 1. Oracle Tabele zewnętrzne - Określanie dynamicznej pliku
- 2. Strona vs Extent vs. Segment vs. Tabele
- 3. Pytanie dotyczące pozycjonowania CSS - Tabele vs. bezwzględne vs. DL
- 4. Tabele przestawne/tabele EPPlus
- 5. mysql lewo sprzężenie zewnętrzne
- 6. Jak możemy odróżnić LEWE ZEWNĘTRZNE ŁĄCZENIE vs Łączenie lewe
- 7. Zewnętrzne elementy zewnętrzne w węźle i przeglądarce
- 8. Ładowanie pliku XML do pola xmltype za pomocą sqlLoader
- 9. prawe sprzężenie zewnętrzne w SQLAlchemy
- 10. Pierwsze kroki z pamięcią masową Azure: Blobs vs Tabele vs SQL Azure
- 11. Tabele transpozycji?
- 12. Angular 2 zewnętrzne wejścia
- 13. sprzężenie zewnętrzne data.table R
- 14. xkcd: Efekty zewnętrzne
- 15. Mieszanie zewnętrzne i const
- 16. Efekty zewnętrzne w OpenGL
- 17. Zewnętrzne funkcja klasy
- 18. Wykonaj zewnętrzne polecenie
- 19. Sortowalne tabele w Django
- 20. Unixowe tabele plików systemowych
- 21. Jak podsumować dwie tabele?
- 22. Tabele skrótów w prologu
- 23. NHibernate/Localization/Tabele wyszukiwania
- 24. Lua - scalić tabele?
- 25. Responsywne tabele, sprytny sposób
- 26. Tabele członkostwa ASP.NET SQL
- 27. Innodb i tymczasowe tabele
- 28. Pętla MySQL poprzez tabele
- 29. Aktualizuj tabele bazy danych
- 30. Jak odjąć tabele sql?
+1, wszystkie zalety. – DCookie