2010-04-29 3 views
0

SSMS에서 필자는 xml 경로 쿼리를 작성했으며 매우 아름답습니다.FOR XML PATH 쿼리 결과를 SSIS로 파일

제어 흐름의 "Execute SQL Task"에 넣고 결과 집합을 XML로 설정합니다.

이제 결과를 실제 xml 파일로 가져 와서 제 3 자에게 FTP로 전달할 수 있습니까?

이것은 매우 쉬웠을 것입니다! 나는 XML을 변수에 넣을 것이지만, 우리는 거대한 파일을 볼 것입니다. 아마도 100MB +

스크립트 작업을 사용해야합니까? (다른 옵션이있는 경우이를 피하고 싶습니다.)

답변

0

소스 (SQL 호출)와 대상 (플랫 파일 연결)을 결합하려면 실행 SQL 태스크 대신 data flow task을 사용해야합니다. .

+0

먼저 플랫 파일 연결에 XML 데이터 유형이 없다고 시도했습니다. 데이터 변환을 통해 실행 해 보았는데 파일을 DT_IMAGE로 보았습니다 ... DT_TEXT로 변경하려고 시도했지만 DT_STR이 너무 작습니다. 둘 모두 내 플랫 파일에 인식 할 수없는 문자를 넣습니다. 어떤 데이터 형식을 사용 하시겠습니까? 플랫 파일 연결이 XML 출력을 처리하도록 설계된 것은 아닙니다. – WhimSQL

+0

xml은 실제로 nvarchar (max)입니다.이 값을 지정할 수 있어야합니다. – gbn

0

정확히 동일한 문제 (예 : 저장 프로 시저에서 거대한 XML 데이터 추출 및 SSIS를 사용하여 작성)를 검색하고있었습니다.

OLEDB를 사용하고 있었지만 작동했지만 힘들었습니다. SSIS의 ADO.NET 어댑터로 전환하면 SQL Server에서 XML을 가져 오는 속도가 50 배 빨라집니다. 관심이 있으시면 세부 사항을 설명하겠습니다.

0

내가 꽤 같이 할 수 전체 스크립트 (VB.net) 때문에, 스크립트 작업을 사용하여 함께 주저 이해가 안 : 거의 모든 그것이 당신의 XML만큼 걸리는 것

Imports System 
Imports System.Data 
Imports System.Math 
Imports Microsoft.SqlServer.Dts.Runtime 
Imports System.Data.SqlClient 
Imports System.Text 
Imports System.IO 


Public Sub Main() 
Using Out As StreamWriter = New StreamWriter(<--XML FILE LOCATION-->) 
Out.Write(Dts.Variables("User::Xml").Value.ToString()) 
Out.Close() 
End Using 
Dts.TaskResult = Dts.Results.Success 
End Sub 

잘 형성되어있다.

관련 문제