Mamy aplikację napisaną w języku C i Pro * C, która wstawia dane z plików dziennika do bazy danych Oracle 11.2 za pomocą macierzy hostów i wstawiania zbiorczego. Korzysta z podpowiedzi APPEND
i NOLOGGING
, aby skorzystać z bezpośredniego wstawiania ścieżek i zredukować ilość generowanych powtórzeń. NOLOGGING
ma sens, ponieważ jest to tymczasowa tabela pomostowa, a dane można odzyskać z plików dziennika w razie potrzeby.Czy można używać bezpośredniego wstawiania ścieżek za pomocą JDBC/Java?
Próbujemy powielić tę funkcję w Javie, ale nie możemy użyć bezpośredniego wstawiania ścieżek dużej liczby rekordów. Czy to możliwe z Java/JDBC?
Rzeczy, które próbowałem i badane są:
- JDBC jednostkowe (zarówno standardowe dozowanie i Oracle's extensions). Takie podejście pozwala zaoszczędzić czas podróży w obie strony, ale jest to nieistotne, ponieważ aplikacja znajduje się na tym samym komputerze co baza danych. Nie używa również bezpośredniej ścieżki.
- Podpowiedź
APPEND_VALUES
. Brzmi to obiecująco, ale nie ma większego sensu, ponieważ grupowanie JDBC nie wydaje się faktycznie wykonywać wstawki "tablicowej" wielu rekordów.
Z tego co rozumiem, bezpośrednie wstawianie ścieżek obsługuje tylko the subquery syntax and not the VALUES clause. Nie można tego użyć, ponieważ dane do wstawienia nie istnieją jeszcze w bazie danych.
Nie mogę znaleźć żadnego odniesienia do Javy, która może używać ładowania w stylu tablicy hosta używanej przez Pro * C.
Odkładając na bok, sprawdzamy obciążenie zewnętrznego stołu lub programu ładującego SQL * i doceniamy, że narzędzia te umożliwiają bezpośrednie ładowanie ścieżek, ale to pytanie polega na uzyskaniu ostatecznej odpowiedzi na pytanie, czy bezpośrednie wstawianie ścieżek jest możliwe nawet z Javy . Zrozumienie ograniczeń Java API jest przydatne nie tylko dla tego projektu, ale także dla przyszłych projektów.
Aby powtórzyć pytanie, czy istnieje sposób, w jaki mogę skorzystać z bezpośredniego wstawiania ścieżek z Java?
Powiązane pytanie:
Znalazłeś sposób bezpośredniego wstawiania przez jdbc? – Denis
Nie, nie wygląda na to, że jest to możliwe. ładowanie ścieżki i jej równoległość. Nadal mam nadzieję, że ktoś przyjdzie i wskaże coś, co przeoczyłem. –
Widzę, że smb był w stanie go przetestować, jednak nie przydałoby się to w jego przypadku: http://asanga-pradeep.blogspot.com/2014/10/appendvalues-hint-and-jdbc.html – Denis