I. Mục đích
Tạo một external table list danh sách các file có đuôi xls trong thư mục /XXshares/XX/SBV/XXX/ trong database oracle 11g được cài đặt trên máy chủ IBM System P5, có hệ điều hành AIX 6.1.
II. Các bước thực hiện
Bước 1: Tạo directory, gán quyền cho user database (nếu cần)
CREATE DIRECTORY XXX_TTXX as '/XXshares/XX/SBV/XXX/';
GRANT READ, WRITE ON DIRECTORY XXX_TTXX TO APPS;
Bước 2: Tại thư mục /XXshares/XX/SBV/XXX/ tạo file XXX_xls_ls.sh () có nội dung như sau:
#/bin/bash
/bin/rm -f *.log
/bin/ls -tr /XXshares/XX/SBV/XXX/*.xls| /bin/perl -ne '
chomp;
$filename = $_;
if ( -f $filename )
{
($size, $mod_time) = (stat $filename)[7,9];
($second, $min,$hour,$day, $month, $year) = (localtime $mod_time)[0,1,2,3,4,5];
printf("%-30s\t%-15d\t%d-%0.2d-%0.2d %0.2d:%0.2d:%0.2d\n",
$filename,
$size,
$year+1900,
$month+1,
$day,
$hour,
$min,
$second);
}
'
Bước 3: thay đổi quyền truy cập vào file XXX_xls_ls.sh
chmod 777 /XXshares/XX/SBV/XXX/XX_xls_ls.sh
Bước 4: Tạo External Table bằng câu lệnh sau:
CREATE TABLE XXX_ttXX_sent_files(
FILE_NAME VARCHAR2(150),
FILE_SIZE NUMBER,
FILE_DATE VARCHAR2(10),
FILE_TIME VARCHAR2(10)
)
ORGANIZATION EXTERNAL (
TYPE ORACLE_LOADER
DEFAULT DIRECTORY XXX_TTXX
ACCESS PARAMETERS (
records delimited by newline
preprocessor XXX_TTXX: 'XXX_xls_ls.sh'
skip 0
fields terminated by whitespace ldrtrim
)
LOCATION(XXX_TTXX:'XXX_xls_ls.sh')
);
Bước 5: Thực hiện truy vấn để kiểm tra external table được tạo ra
SELECT * FROM XXX_ttXX_sent_files;
Ghi chú:
Nếu chưa có file *.xls nào trong thư mục thì câu lệnh truy vấn sẽ bị lỗi OCI…