MSSQL에 대한 FreeTDS사용법 Server

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


1 2 3 4 5 6 7 8 9 10 다음