반응형

웹 서비스를 이용한 환율 정보 읽어오기

 

한대성

MS SQL Server MVP

에이디컨설팅 책임 컨설턴트 | SQLLeader.com 운영자

 

 

한동안 때문에 자료를 거의 올렸네요. 추석을 맞이하여 간단하면서도 유용한 자료 하나 올립니다.

고객사를 다니다 보면 환율 정보를 읽어오는 기능에 대해 문의가 많습니다. SSIS 패키지를 이용해서 이를 구현하는 기능은 이전의 강좌글에서 간략히 다루었지만, 다루었던 사이트가 이상 유효하지 않고, 기능적인 부분만 간략히 설명했기 때문에, 상세히 다루겠습니다.

 

 

작업 내용 : 매일 환율 정보를 읽어와서 테이블에 저장하기

 

SSIS 패키지에는 SQL 관련된 기능 외에도 다양한 기능들이 포함되어 있습니다. 이러한 것들 하나인 서비스 작업과 XML 작업 개체를 이용해서 외부에서 환율 정보를 읽어와서 저장하는 기능을 구현하고자 합니다.

 

 

1. 다음과 같은 간단한 테이블을 생성합니다. 환율 정보가 저장될 테이블입니다.

 

CREATE TABLE CurrencyInfo

(

             DateStr smalldatetime,

             Currency float

)

Go

( 예제에서는 localhost tempdb에다가 생성토록 하겠습니다.)

 

2. SSIS 패키지의 연결 관리자에 OLE DB 연결을 하나 추가한 , 1에서 사용한 DB 지정토록 합니다.

 

3. 연결 관리자에 HTTP 연결용 연결 관리자 추가합니다. 연결 관리자는 연결(W) 선택한 나타나는 목록에서 선택해야 합니다. 그런 다음, HTTP 연결 관리자 편집기 창의 서버 URL(U) 부분에 다음과 같은 URL 입력합니다.

http://www.webservicex.com/CurrencyConvertor.asmx?wsdl

 

HTTP 연결을 이용해서 환율 정보를 제공하는 서버에 연결을 하게 됩니다. (누가? 다음에 나오는 서비스 작업 개체가.)

 

4. 우선, 작업 개체를 추가하기 전에 변수 창에 다음과 같은 개의 변수를 추가합니다.

 

하나는 XMLResult라는 Object 변수이며, 다른 하나는 ResultVal이라는 String 변수입니다.

XMLResult라는 변수에는 환율 정보를 읽어온 결과를 저장합니다. 결과 유형은 XML 형태로 넘어오게 됩니다. 이러한 XML 데이터 , 우리가 필요로 하는 환율 부분만을 떼어내서 ResultVal이라는 변수에 저장하게 됩니다.

 

5. 이제 도구 상자에서 서비스 작업 개체를 선택한 , 제어 흐름 영역에 추가합니다.

추가한 서비스 작업 개체의 작업 편집기를 다음 아래와 같이 HttpConnection 부분을 위에서 추가한 연결로 설정하고, WSDLFile 부분에 적당한 경로를 지정합니다. WSDL 파일에는 서비스에서 제공하는 여러 메소드에 대한 정보가 저장되게 됩니다. 파일이 없는 경우에는 아래에 있는 WSDL 다운로드(D) 버튼을 클릭해서 다운받도록 합니다.

 

 

6. 서비스 작업 편집기 입력 탭을 선택한 , 아래와 같이 환율 정보를 읽어올 항목을 설정합니다.

우리는 USD 대한 KRW 정보, 1달러에 대한 원화의 정보를 읽어오고자 하기 때문에 위와 같이 FromCurrency에는 USD, ToCurrency에는 KRW 입력하였습니다. 필요한 경우에는 이러한 값들을 SSIS 변수에 저장해 놓고 변수를 지정하는 식으로도 구현할 있습니다.

 

7. 이제 읽어온 결과값을 저장하는 곳을 설정하는 부분입니다. 출력 탭을 선택한 , 아래와 같이 4단계에서 추가한 Object 변수를 선택합니다.

 

8. 이제 도구 상자에서 XML 작업 추가한 , 서비스 작업 연결합니다.

 

9. XML 작업을 더블 클릭해서 XML 작업 편집기를 , 아래와 같이 세부 항목을 설정합니다.

XMLResult라는 변수에 저장된 XML 데이터 중에서 숫자 부분만을 추출하여 이를 다른 변수에 저장하는 기능을 구현하는 것이며 XPath라는 작업 형태로 설정하게 됩니다.

 

10. 이제 SQL 실행 작업 추가한 , XML 작업 연결합니다.

 

11. SQL 실행 작업 편집기에서 Connection 부분은 2에서 추가한 SQL 연결을 선택합니다.

SQLStatement 부분에 다음과 같은 쿼리문을 입력합니다.

INSERT CurrencyInfo(DateStr, Currency)

SELECT getdate(), ?

 

, BypassPrepare 옵션이 True 되어 있는지 확인합니다. (서비스 2 이후로는 속성의 기본값이 True 변경되었습니다. 혹시나 서비스 2 이전 버전에서 작업할 경우, 제대로 작동하지 않을 있습니다. 가능한 서비스 2 이상을 설치하신 구현하시기 바랍니다.)

 

12. 매개 변수 매핑 탭에서 다음과 같이 쿼리의 ? 부분에 입력될 변수를 설정합니다.

, 빨간색으로 표시된 것과 같이, 변수 이름, 데이터 형식, 매개 변수 이름에 유의해서 입력합니다.

변수의 데이터 형식은 String 이지만, 쿼리에 입력될 때에는 Float형으로 처리되어 입력하도록 하기 위함이며, 매개 변수 이름의 0, OLE DB 연결에서 번째 나오는 매개 변수 부분(? 표시된 부분)이라는 것을 지정하는 것입니다.

 

13. , 이제 패키지를 실행해 봅니다.

 

 

 

 

환율 정보가 진짜 맞는지 Yahoo.com(http://finance.yahoo.com/currency) 정보와 비교해 봅시다.

 

 

 

환율 정보 외에도 메일 주소 유효성 검사, 날씨 정보, 경제 지표 다양한 형태의 정보를 읽어올 있습니다. 예제를 참고해서 여러 형태로 활용해 보시기 바랍니다.

반응형

+ Recent posts