Shell Script для чтения из файла журнала и обновления таблицы Oracle DB - PullRequest
0 голосов
/ 19 мая 2018

У меня есть требование прочитать отдельный файл журнала для определенных параметров и использовать эти данные для обновления таблицы БД Oracle 11g, как только эти параметры найдены.

, например,

Имя файла журнала Splunk: app.log

Входные параметры в файле журнала:

[timestamp] amount=100,name=xyz,time=19 May 2018 13:45 PM

вывод из сценария оболочки должен быть: сумма должна быть считана в переменную, и 100 должно быть присвоено этому.Это значение 100 должно храниться в таблице БД в Oracle.

Возможно, для этого мне понадобится скрипт awk.Я не получаю представление об этом, поскольку я новичок в сценариях оболочки ..

tail -f|egrep -wi 'amount' /apps/JBoss/log/app.log 

Этот тип команд, кажется, не работает.

Ответы [ 3 ]

0 голосов
/ 20 мая 2018

Вы можете легко получить такие значения, используя регулярное выражение Perl.

amt=$(perl -pe 's/^amount=(\d+).*/$1/' /apps/JBoss/log/app.log)

Если вы хотите использовать команды чистой оболочки,

amt=$(grep amount app.log| cut -f1 -d',' | cut -f2 -d '=')

Вы можете использовать эту переменную в insertзапрос от sqlplus

sqlplus -s USER/PWD<<SQL
INSERT INTO yourtable(column_name) VALUES(${amt});
commit;
exit
SQL
0 голосов
/ 20 мая 2018

Для входного файла (app.log), например:

[timestamp] amount=100,name=xyz,time=19 May 2018 13:45 PM                
[timestamp] amount=150,name=xyz,time=19 May 2018 13:45 PM                
[timestamp] amount=200,name=xyz,time=19 May 2018 13:45 PM                

, вы можете использовать флаг P grep (PCRE):

arr=($(grep -oP "(?<=amount=)\d+" app.log))

При этом будут сохранены значенияamount в массиве arr.Выход:

echo ${arr[@]}
100 150 200
0 голосов
/ 20 мая 2018

Приложение DB Connect может помочь вам.Смотри http://docs.splunk.com/Documentation/DBX/3.1.3/DeployDBX/Createandmanagedatabaseoutputs.

...