2017-04-05 6 views
1

내가 원격 데이터베이스에 다음 쿼리를하고 있어요 :SQL Server가있는 원격 데이터베이스에서 쿼리 결과를 CSV로 내보내는 방법은 무엇입니까?

DECLARE @SQL varchar(max) = 
'SELECT ts, value 
    FROM history 
    WHERE name = ''SOME_ID'' 

EXEC (@SQL) AT SOME_LINKED_SERVER 

것은 그래서 예상 출력은 같다 :

ts  value 
---------------- 
ts1  value1 
ts2  value2 
…  … 

나는 거의 100 다른 이름이 질의를하고 기꺼이 해요 각 출력에 대해 다른 CSV를 저장합니다. 내가 쿼리의 출력 및 선택 "결과를 다른 이름으로 저장 ..."에서 오른쪽 버튼을 클릭하여 수동으로 수행 할 수 있다는 것을 알고 있지만, 각 쿼리가 완료 될 때까지 약 10 분이 걸리기 때문에 너무 오래 걸립니다.

그래서 데이터를 가져온 후 모든 다른 CSV를 내보내는 절차를 자동으로 수행하고 싶습니다. 내 생각은 이름 배열을 통해 검색을 반복하고 쿼리를 실행하고 출력을 CSV로 내보내는 것입니다.

어떻게하면됩니까? 배열을 반복하기 전에 하나의 쿼리 결과에 대해 CSV를 출력하는 데 이미 어려움을 겪고 있습니다. 이 작업을 수행 할 수있을 때 한 번에 하나의 이름으로 그것을 할 이유

+0

출력을 쉽게하기 때문에 SSIS 패키지를 사용하는 것이 가장 좋습니다. –

답변

0

:

SELECT [ts], [value], [name] 
FROM [SOME_LINKED_SERVER].[database_name].[dbo].[history] H (NOLOCK) 
WHERE [name] IN (<name list>) 

그런 다음, 로컬 끝에있는 결과를 저장 로컬 테이블에 데이터를 삽입하고 데이터로 작업하려면 그곳에. 그래서 같이 :

SELECT [ts], [value], [name] 
INTO [local_history] 
FROM [SOME_LINKED_SERVER].[database_name].[dbo].[history] H (NOLOCK) 
WHERE [name] IN (<name list>) 

SELECT * FROM [local_history] -- WHERE [name] = 'SOME_ID' 

그리고 수출, 중 (F12) ... 등의 저장으로 저장 ... 결과를 사용하거나 Excel로 결과를 복사하고 붙여 넣기 및 수행하여.

더 나은 방법 : SSIS가 설치되어있는 경우이를 사용하여 쿼리를 실행하는 패키지를 작성하고 내보내기를 수행합니다. SSIS는 이름 목록을 반복 할 수 있습니다. SSIS를 설치하지 않은 경우 SQL Server가 설치됩니다. SSIS는이 프로세스를 완전히 자동화 할 수 있습니다.