Brzmi jak Zewnętrzny katalog Oracle jest idealny do pracy. Należy pamiętać, że takie podejście jest obarczone trudnościami, jeśli jest to plik tekstowy, w którym użytkownicy mogą pisać. Użytkownicy zrobią setki rzeczy, w które nigdy nie wierzyłeś, że są możliwe, a które spowodują błędy i więcej .
Z artykułu:
Utwórz katalog
udzielaj odczytu, zapisuj w katalogu data_dir Twojemu_użytkownikowi;
Utwórz tabelę zewnętrzną
CREATE TABLE test_ext (
test_code VARCHAR2(5),
test_name VARCHAR2(50)
)
ORGANIZATION EXTERNAL (
TYPE ORACLE_LOADER
DEFAULT DIRECTORY ext_tab_data
ACCESS PARAMETERS (
RECORDS DELIMITED BY NEWLINE
FIELDS TERMINATED BY ','
MISSING FIELD VALUES ARE NULL
(
test_code CHAR(5),
test_name CHAR(50)
)
)
LOCATION ('test1.txt','test2.txt')
)
PARALLEL 5
REJECT LIMIT UNLIMITED;
a następnie odczytaj ze stołu
SELECT *
FROM test_ext
ORDER BY test_name;
Edycja:nadal można to zrobić z katalogami, które nie znajdują się na serwerze bazy danych, ale wymagana jest większa ilość pracy, a to stanowi jeszcze większe ryzyko dla bezpieczeństwa bazy danych i jakości danych. To podejście również nie podlega skalowaniu. Czy zamierzasz dodawać nowy katalog za każdym razem, gdy dodawany jest nowy użytkownik?
Kroki umożliwiające Oracle dostęp do plików znajdujących się na innym komputerze (zakładając system operacyjny Windows)
- utwórz użytkownika Windows lub domeny, który będzie miał uprawnienia do odczytu plików w każdym katalogu, do którego chcesz uzyskać dostęp
- na serwerze bazy danych uruchom services.msc i zmień użytkownika, na którym działa usługa bazy danych Oracle, na nowego użytkownika domeny. Dodaj tego użytkownika do lokalnej grupy o nazwie ORA_DBA na serwerze bazy danych
- uruchom ponownie bazę danych, aby zmiany zaczęły obowiązywać
- utwórz katalog w bazie danych, używając ścieżki takiej jak //clientPc/sharedFolder
- nadaj uprawnienia do odczytu użytkownikowi bazy danych
- na komputerze klienckim przyznaj odczyt użytkownikowi domeny w tym folderze
- sprawdź łączność za pomocą UTLFILE odczytać przykładowy plik na komputerze klienckim