큰 단일 단일 XML 결과를 반환하는 SQL의 저장 프로 시저를 실행하는 powershell 스크립트가 있습니다. 이 XML 결과를 파일에 저장해야합니다.PowerShell, SQL에서 큰 XML 결과 서식 지정
불행하게도 출력물이 PowerShell에 의해 훼손된 것처럼 보이게 만듭니다.
$xmldataset.tables[0] | ft -wrap -hidetableheaders | out-file C:\xml_result.xml
그게 전부 결과를 얻지 만 화면에 표시하는 것처럼 결과를 래핑합니다. 이렇게하면 대부분의 XML 파서가 손상됩니다.
$xmldataset.tables[0] | ft -hidetableheaders | out-file C:\xml_result.xml
이는 내 결과를 임의로 두 줄로 나눠서 각 줄을 잘라냅니다.
-wrap을 사용하지 않으면 SQL에서 반환되는 행이 하나이더라도 결과가 두 행에 저장됩니다.
다음은 SQL이 양호하게는뿐만 아니라 SQL 결과에 의해 생성 된 바꿈을 저장, 파일로 저장에서 난 그냥 출력을 얻을 수있는 방법은 전체 코드
$SqlCmd.CommandText = "exec dbo.sp_getXML"
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server = $SqlServer; Database = $SqlCatalog; Integrated Security = True"
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = $SqlQuery
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$xmlDataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($xmlDataSet)
입니다.
불행히도, 여전히 줄무늬가 추가됩니다. 콘솔에 결과를 표시하는 경우 (즉, 창 크기에 따라 변경되는 경우) 정상적으로 추가 할 위치에 추가하는 것 같습니다. – coreno
그것이 바로 format-table의 기능입니다. 출력을 파일로 저장하려면, ft를 사용하지 않고 설정 내용으로 직접 파이프하십시오. – mjolinor
그렇지 않으면 헤더를 포함하고 데이터 결과를 두 행으로 나누기 때문에 형식 표를 작성했습니다. – coreno