Вам придется работать на уровне ОС, чтобы собрать имена файлов из каталога ОС. Учитывая, что вы пытаетесь получить информацию о вкусах Unix; Следующий URL поможет вам захватить список файлов в таблицу и даже в виде.
Код, который вам нужен:
--drop directory SCRIPT_TEMP_DIR;
CREATE DIRECTORY SCRIPT_TEMP_DIR AS '/home/oracle/oracle_scripts'
;
GRANT EXECUTE ON DIRECTORY SCRIPT_TEMP_DIR TO USER_NAME
; -- Here USER_NAME will be your SCHEMA/USER NAME
drop table USER_NAME.home_directory purge;
CREATE TABLE USER_NAME.home_directory
(
filerecord VARCHAR2(15),
flink VARCHAR2(2),
fowner VARCHAR2(6),
fgroup VARCHAR2(8),
fsize VARCHAR2(32),
fdate_part1 VARCHAR2(16),
fdate_part2 VARCHAR2(16),
fdate_year_or_time VARCHAR2(16),
fname VARCHAR2(255)
)
ORGANIZATION EXTERNAL
(
TYPE ORACLE_LOADER
DEFAULT DIRECTORY SCRIPT_TEMP_DIR
ACCESS PARAMETERS
(
records delimited by newline
preprocessor SCRIPT_TEMP_DIR:'listing.sh'
fields terminated by whitespace
(
filerecord ,
flink ,
fowner ,
fgroup ,
fsize ,
fdate_part1 ,
fdate_part2 ,
fdate_year_or_time ,
fname
)
)
LOCATION ('listing.sh')
)
REJECT LIMIT UNLIMITED;
Как только это будет сделано, вам просто нужно выбрать созданную выше таблицу.
SELECT *
FROM USER_NAME.home_directory;
Позже вы можете применять функции substr / instr для разделения информации. Вы также можете использовать функцию регулярного выражения для получения необходимой информации.
SELECT fname,
regexp_substr(fname, '[^.]+', 1, 1) part1,
regexp_substr(fname, '[^.]+', 1, 2) part2,
regexp_substr(fname, '[^.]+', 1, 3) part3
FROM USER_NAME.home_directory;
И это дает вам:
Требуемый URL-адрес: здесь
Код, вставленный выше, был изменен, когда вам нужно изменить также USER_NAME при предоставлении разрешений для каталога.