복붙노트

[SQL] SSIS를 사용하면 파일에 테이블 데이터의 XML 표현을 추출

SQL

SSIS를 사용하면 파일에 테이블 데이터의 XML 표현을 추출

나는 텍스트 파일에 쿼리 결과 집합의 XML 표현을 추출하는 SSIS를 사용하는 것을 시도하고있다. 내 쿼리는 현재 성공적으로 내가 SSMS에서 실행할 때이 필요로하는 정확한 XML 출력을 추출한다. 나는 파일을 생성하기 위해 SSIS 패키지에이 결과 집합을 사용하여 찾을 수있는 모든 트릭을 시도했습니다.

XML 쿼리의 출력이 파일 대상으로 TEXT, NTEXT 또는 IMAGE를 밀어 수 없습니다 TEXT 및 SSIS로 취급되기 때문에 플랫 파일에 포트 A OLE 소스에 흐름을 사용하지 작업을 수행합니다.

내가 다음 스크립트 작업을 사용 후 사용자 변수를 채우기 위해 SQL 작업을 실행하고하려 한 파일 출력이 사용자 변수의 내용을 작성하는 (C # .NET을 사용하여 작성)하지만, 사용자 변수는 항상 비어 있습니다. 나도 몰라,하지만 난 XML은 텍스트 또는 이미지와이 문제를 처리하지 않는 사용자 변수로 취급되기 때문에이 다시, 의심.

쿼리는이 양식입니다 : 고르다 * 데이터 테이블 FROM 데이터 Table.FIELD = '값' FOR XML AUTO, ROOT ( '루트 발')

그 결과 데이터 셋 잘 XML을 형성하고,하지만 난 파일에 결과 집합에서 활용하는 방법을 알아낼 수 없습니다.

내가 C # 4.0에서이 작업을 수행 할 수있는 콘솔 응용 프로그램을 작성하는 것은 비교적 쉬운 일이지만, 적어도 내가 콘솔 응용 프로그램 및 스케줄러를 쓰기 전에이 SSIS 수행 할 수 없습니다 증명에 제한이 저를 필요로한다.

해결법

  1. ==============================

    1.열 내보내기 변환 : 죄송합니다 망치고,하지만 당신을 위해 SSIS 옵션이있다.

    열 내보내기 변환 : 죄송합니다 망치고,하지만 당신을 위해 SSIS 옵션이있다.

    내가 가진 OLE DB 쿼리를 정의

    SELECT
        *
    FROM
    (
        SELECT * FROM dbo.spt_values FOR XML AUTO, ROOT('RootVal')
    ) D (xml_node)
    CROSS APPLY
    (
        SELECT 'C:\ssisdata\so_xmlExtract.xml'
    ) F (fileName)
    

    이것은 1 행과 흐름의 2 열을 초래한다. 나는 다음 열 내보내기 변환을 부착하고, 파일 경로 열로 추출 열 및 파일 이름으로 xml_node로를 유선

    대부분 잘립니다 결과에 따라

    <RootVal>
        <dbo.spt_values name="rpc" number="1" type="A  " status="0"/>
        <dbo.spt_values name="dist" number="8" type="A  " status="0"/>
        <dbo.spt_values name="deferred" number="8192" type="V  " low="0" high="1" status="0"/>
    </RootVal>
    

    보다 상세한 답, 그림, SSIS이 Q & A 수출 VARBINARY (최대) 열에 사용할

  2. ==============================

    2.BillInKC의 대답은 내가 본 중에 최고입니다,하지만 SQL은 (크로스 필요가 적용되지 않습니다) 단순화 할 수있다 :

    BillInKC의 대답은 내가 본 중에 최고입니다,하지만 SQL은 (크로스 필요가 적용되지 않습니다) 단순화 할 수있다 :

    SELECT X.*, 'output.xml' AS filename
    FROM (SELECT * FROM #t FOR XML PATH('item'), ROOT('itemList')) AS X (xml_node)
    

    출력이 동일한 구조를 것

    xml_node                                           filename
    -------------------------------------------------- ----------
    <itemList><item><num>1000</num></item></itemlist>  output.xml
    
    (1 row(s) affected)
    
  3. from https://stackoverflow.com/questions/9104123/using-ssis-to-extract-a-xml-representation-of-table-data-to-a-file by cc-by-sa and MIT license