linux 에서 FreeTDS를 이용하여 MSSQL접근 및 쿼리를 통해 내용 얻어오기
1. sql.sh에서 해당 쿼리 작성
SELECT
[FIELD]
FROM [TABLE]
WHERECONVERT(CHAR(19),LOG_DATE,20) >= '$FROMDATE'
AND CONVERT(CHAR(19),LOG_DATE,20) < '$TODATE'
붉은색 필드의 경우 시간필드의 형식을 바꿔서시스템시간과 비교 후 일정 시간동안의 내용을 쿼리하여 가져온다.
2. run.sh에서 해당 쿼리 내용을 화면에 뿌린 후 파일로 저장.
sed -e'1,11d' /splunk_data/drm/data/$WRITETMPFILE | grep -v 1\> >/splunk_data/drm/data/$WRITETXTFILE
mysql의 경우 필드명(data가 아닌 필드)이 쿼리시에 함께 출력되므로 해당 내용에 대해서편집 후 저장.
3. 아래 내용의 경우 간략한 예제로 실제 DB에서 해당 내용들을 받아 오는데사용한 스크립트다.
연동 대상 장비 및 서버의 환경에 맞게수정하여 사용하면 됨.
4. FreeTDS 사용법
yuminstall –y freeTDS*
#vi/etc/freeTDS.conf 수정
[MyServer65] ß 접근시에 사용할 이름.
host = ntmachine.domain.com ß접근할DB IP,또는 도메인
port = 1433ß MSSQL port
tds version = 4.2 ß TDS 버전(MSSQL버전이 높을 경우 7.0 , 8.0으로 수정
[sql.sh]
#!/bin/sh
export TZ=KST-8
exportLANG=ko_KR.UTF-8
FILEDAYHOUR=`date+"%Y%m%d_%H"`
FROMDAYHOUR=`date+"%Y-%m-%d %H:"`
export TZ=KST-9
TODAYHOUR=`date+"%Y-%m-%d %H:"`
DB_TABLE_NAME=Log_FileHistory_T
DELIMS=_
WRITEFILENM=$DB_TABLE_NAME$DELIMS$FILEDAYHOUR.txt
FROMDATE=$FROMDAYHOUR"00:00"
TODATE=$TODAYHOUR"00:00"
tsql -S [freeTDS에 등록되어 있는 DB] -U [ID] -P "[PASSWORD]"<<EOF
use [사용할 DB]
go
SELECT
[FIELD]
FROM [TABLE]
WHERECONVERT(CHAR(19),LOG_DATE,20) >= '$FROMDATE'
AND CONVERT(CHAR(19),LOG_DATE,20) < '$TODATE'
go
EOF
[run.sh]
#!/bin/sh
export TZ=KST-8
FILEDAYHOUR=`date+"%Y%m%d_%H"`
FROMDAYHOUR=`date+"%Y-%m-%d %H:"`
export TZ=KST-9
TODAYHOUR=`date +"%Y-%m-%d%H:"`
DB_TABLE_NAME=[파일명]
DELIMS=_
WRITETMPFILE=$DB_TABLE_NAME$DELIMS$FILEDAYHOUR.tmp
WRITETXTFILE=$DB_TABLE_NAME$DELIMS$FILEDAYHOUR.txt
echo $WRITEFILENM
FROMDATE=$FROMDAYHOUR"00:00"
TODATE=$TODAYHOUR"00:00"
echo $FROMDATE" - " $TODATE
/splunk_data/drm/sql.sh> /splunk_data/drm/data/$WRITETMPFILE
sed -e '1,11d'/splunk_data/drm/data/$WRITETMPFILE | grep -v 1\> >/splunk_data/drm/data/$WRITETXTFILE
rm -rf/splunk_data/drm/data/$WRITETMPFILE


최근 덧글