2012-05-29 2 views
2

이 같은 xp_cmdshell을 가진 파일을 만드는 오전에 xp_cmdshell을 가진 파일로 :쓰기는 UTF-8

SELECT @command = 'echo ' + @fileContent + ' > e:\out\' + @fileName + '.csv' 
exec master.dbo.xp_cmdshell 'mkdir "e:\out\"' 
exec master..xp_cmdshell @command 

문제는 파일의 내용이 UTF-8에없는 등 일부 특수 문자는 잘못된 것입니다.

파일을 UTF-8 인코딩으로 만들 수 있습니까?

답변

1

당신은 OUTFILE 파일

SELECT @command = 'sqlcmd -S ServerName -d DataBaseName -E -o "'+ @fileName +'" -Q "Your Query" -W -w 4000 -s ";" -f 65001' 
exec master.dbo.xp_cmdshell 'mkdir "e:\out\"' 
exec master..xp_cmdshell @command 

추신으로 UTF8을 사용하여 나타내는 SQLCMD 대신 DOS로 이전 tecnique가 65001 -f

sqlcmd -S ServerName -d DataBaseName -E -o "CSV File Path & Location" -Q "Your Query" -W -w 4000 -s ";" -f 65001 

스위치 리디렉션 outupt 사용할 수 있습니다 나는 그렇게

내가 마지막으로 TEMP.TXT 파일에 출력을 작성하고 UTF-8로 변환 할 다음 PowerShell 명령을 추가하여이 일을 성공

4

가 도움이 희망 SQLCMD 문서를 확인하시기 바랍니다 테스트 어차피 :

-- Change encoding to UTF-8 with PowerShell 
SET @command = 'powershell -Command "Get-Content '[email protected]+'\temp.txt -Encoding Unicode | Set-Content -Encoding UTF8 '[email protected]+'\'[email protected]+'"'; 
EXEC xp_cmdshell @command;