programing

SSMS에서 ntext 또는 nvarchar(최대)의 모든 텍스트를 어떻게 표시합니까?

iphone6s 2023. 4. 7. 20:59
반응형

SSMS에서 ntext 또는 nvarchar(최대)의 모든 텍스트를 어떻게 표시합니까?

SQL Server Management Studio에서 NTEXT 또는 NVARCHAR(최대)의 모든 텍스트를 어떻게 표시합니까?기본적으로는 처음 수백 글자(255?)만 반환되는 것처럼 보이지만 프로그램을 작성할 필요 없이 필드 전체를 빠르게 볼 수 있는 방법이 필요할 수 있습니다.SSMS 2012에서도 이 문제가 발생합니다.

(Results To Grid)를 선택하고 오른쪽 클릭하여 결과를 CSV 파일로 저장함으로써 NVARCHAR(MAX) 열에서 전문(99,208자)을 얻을 수 있었습니다.결과를 보려면 텍스트 편집기(Excel 아님)를 사용하여 CSV 파일을 엽니다.재미있게도 동일한 쿼리를 실행하려고 했는데 Results to File이 활성화되어 있으면 Results to Text 제한을 사용하여 출력이 잘렸습니다.

@MartinSmith가 (현재) 수락된 답변에 대한 코멘트로 설명한 해결 방법이 작동하지 않았습니다('[' 문자, 16진수 값 0x5B, 이름에 포함할 수 없음'에 대한 전체 XML 결과를 표시하려고 할 때 오류가 발생했습니다).

퀵 트릭-

SELECT CAST('<A><![CDATA[' + CAST(LogInfo as nvarchar(max)) + ']]></A>' AS xml)
FROM Logs
WHERE IDLog = 904862629

SSMS의 새로운 버전에서는 (쿼리/쿼리 옵션/결과/그리드/최대 문자 취득) 메뉴에서 설정할 수 있습니다.

여기에 이미지 설명 입력


이전 버전의 SSMS

옵션(Query Results/SQL Server/Results to Grid 페이지)

현재 쿼리의 옵션을 변경하려면 쿼리 메뉴에서 쿼리 옵션을 클릭하거나 SQL Server 쿼리 창을 마우스 오른쪽 버튼으로 클릭하고 쿼리 옵션을 선택합니다.

...

[ Maximum ]( 취득 문자 수)
각 셀에 표시할 최대 문자 수를 지정하려면 1 ~65535 의 숫자를 입력합니다.

최대값은 보시는 바와 같이 64K입니다.기본값은 훨씬 작습니다.

텍스트에 대한 BTW 결과에는 더 큰 제한이 있습니다.

되는 최대 수
256번입니다.잘라내지 않고 더 큰 결과 세트를 표시하려면 이 값을 늘립니다.8,192명

SSMS용 애드인을 작성했는데, 이 문제는 거기서 해결되었습니다.다음 두 가지 방법 중 하나를 사용할 수 있습니다.

"현재 셀 1:1 복사"를 사용하여 원본 셀 데이터를 클립보드에 복사할 수 있습니다.

http://www.ssmsboost.com/Features/ssms-add-in-copy-results-grid-cell-contents-line-with-breaks원본 셀 내용 복사

또는 "셀 비주얼라이저" 기능을 사용하여 외부 텍스트 편집기(http+ 또는 메모장)에서 셀 콘텐츠를 열 수 있습니다.http://www.ssmsboost.com/Features/ssms-add-in-results-grid-visualizers

(외부 응용 프로그램에서 필드 내용을 열 수 있으므로 텍스트임을 알 수 있는 경우 텍스트 편집기를 사용하여 엽니다.내용이 그림이 있는 이진 데이터인 경우 사진으로 보기를 선택합니다.다음의 샘플은, 화상을 여는 것을 나타내고 있습니다).SSMS 결과 그리드 비주얼라이저

데이터를 XML로 반환

SELECT CONVERT(XML, [Data]) AS [Value]
FROM [dbo].[FormData]
WHERE [UID] LIKE '{my-uid}'

SSMS 옵션 창에서 예상 결과에 따라 적절한 제한을 설정하십시오.여기에 이미지 설명 입력

문자가 않은 할 수 .&&amp;XML 을 사용합니다.

PowerShell을 사용한 데이터 반환

이를 위해서는 명령어를 실행하는 머신에 PowerShell SQL Server 모듈이 설치되어 있어야 합니다.

셋업 완료 시 다음 스크립트를 설정 및 실행합니다.

Invoke-Sqlcmd -Query "SELECT [Data] FROM [dbo].[FormData] WHERE [UID] LIKE '{my-uid}'" -ServerInstance "database-server-name" -Database "database-name" -Username "user" -Password "password" -MaxCharLength 10000000 | Out-File -filePath "C:\db_data.txt"

""를 해 주세요.-MaxCharLength매개 변수를 필요에 맞는 값으로 지정합니다.

저는 오늘 이 방법으로 성공했습니다.다른 답변과 마찬가지로 다른 방법을 사용하여 내용을 XML로 변환합니다.를 못 때문에FOR XML PATH그 중에서 가 한 번 더 그 중에 한 번 더 덧붙여서 을 해드릴게요.

SELECT [COL_NVARCHAR_MAX]
  FROM [SOME_TABLE]
  FOR XML PATH(''), ROOT('ROOT')

한 XML이 .<ROOT></ROOT> 예에서는 '각각'이라고 불리는 안에 되어 있습니다.<COL_NVARCHAR_MAX>할 수 AS.

다음과 같은 특수 문자&,< ★★★★★★★★★★★★★★★★★」>또는 유사한 항목이 각각의 개체로 변환됩니다. 변환이 도 있어요.&lt;,&gt; ★★★★★★★★★★★★★★★★★」&amp;결과를 어떻게 처리하느냐에 따라 원래 캐릭터로 돌아갑니다.

편집

건 ★★★★★★★★★★★★★★★★★★★★★★★★★★.CDATA는 을 사용하여 할 수 .FOR XML저도 좀 번거롭긴 하지만요.이것으로 충분합니다.

SELECT 1 as tag, 0 as parent, [COL_NVARCHAR_MAX] as [COL_NVARCHAR_MAX!1!!CDATA]
  FROM [SOME_TABLE]
  FOR XML EXPLICIT, ROOT('ROOT')

대체 PowerShell

이것은 오래된 게시물이고 나는 답을 다 읽었다.그러나 SSMS에서 변경하지 않고 여러 줄의 큰 텍스트 필드를 출력하는 것은 조금 힘들었습니다.필요에 따라 작은 C# 프로그램을 작성하게 되었습니다만, 커맨드 라인을 사용하면 가능할지도 모른다고 생각했습니다.PowerShell을 사용하면 쉽게 실행할 수 있습니다.

먼저 관리 PowerShell에서 모듈을 설치합니다.

Install-Module -Name SqlServer

쿼리를 실행하는 데 사용합니다.

$Rows = Invoke-Sqlcmd -Query "select BigColumn from SomeTable where Id = 123" `
    -MaxCharLength 2147483647 -ConnectionString $ConnectionString

이렇게 하면 다음과 같이 콘솔에 출력할 수 있는 일련의 행이 반환됩니다.

$Rows[0].BigColumn

또는 다음과 같이 파일로 출력합니다.

$Rows[0].BigColumn | Out-File -FilePath .\output.txt -Encoding UTF8

그 결과, 보기/편집하기 위해서 파일에 잘라내지 않은 아름다운 텍스트가 작성됩니다.SQL Server에 텍스트를 다시 저장하기 위한 유사한 명령어가 있는 것은 확실합니다만, 그것은 다른 질문처럼 보입니다.

편집: 이 접근방식을 세컨더리 솔루션으로 설명한 @dvlsc의 답변이 있었습니다.부차적인 답변으로 기재되어 있었기 때문에, 애초에 빠뜨린 것이라고 생각합니다.PowerShell 접근법에 초점을 맞춘 답변은 남겨두겠습니다만, 적어도 예정대로라면 인정해 주셨으면 합니다.

Visual Studio Code SQL Server 플러그인을 사용합니다.JSON에 도움이 됩니다.

보기만 하면 되는 경우 다음을 사용합니다.

print cast(dbo.f_functiondeliveringbigformattedtext(seed) as text)

결과적으로 SMSS의 메시지창에 있는 줄 바꿈과 모든 콘텐츠를 얻을 수 있게 됩니다.물론 하나의 셀만 허용됩니다.여러 행에서1개의 셀을 실행할 경우 다음과 같이 할 수 있습니다.

declare @T varchar(max)=''
select @T=@T
       + isnull(dbo.f_functiondeliveringbigformattedtext(x.a),'NOTHINGFOUND!')
       + replicate(char(13),4)
from x -- table containing multiple rows and a value in column a
print @T

SQL 코드로 생성된 JSON 문자열을 검증하기 위해 사용합니다.그렇지 않으면 읽기가 너무 어려워!

대안 1: 오른쪽 버튼을 클릭하여 셀을 복사하여 텍스트 편집기에 붙여넣기(utf-8 지원 포함)

대체 2: 우클릭 후 CSV 파일로 내보내기

대안 3: SUBSTRING 함수를 사용하여 열의 일부를 시각화합니다.예:

mytable WHERE ID=123456에서 SUBSTRING(fileXml,2200,200)을 선택합니다.

큰 변수/텍스트 열을 빠르게 표시하는 가장 쉬운 방법은 다음과 같습니다.

declare @t varchar(max)

select @t = long_column from table

print @t

언급URL : https://stackoverflow.com/questions/11897950/how-do-you-view-all-text-from-an-ntext-or-nvarcharmax-in-ssms

반응형