programing

SSMS .rpt 출력 파일을 .txt/.csv로 변환

oldcodes 2023. 7. 8. 11:10
반응형

SSMS .rpt 출력 파일을 .txt/.csv로 변환

큰 SSMS(SQL Server Management Studio) 쿼리 결과(2.5m 줄, 9필드)를 .csv 또는 쉼표로 구분된 .txt(제목 포함)로 내보내고 싶습니다.(MS SQL Server 2005 Management Studio)

따라서 데이터에 대한 특정 계산을 수행하기 위해 VBA 프로그램으로 한 줄씩 읽거나 Excel로 쿼리를 수행할 수 있습니다(예: Microsoft Query).계산이 복잡하고 SSMS가 아닌 다른 곳에서 하는 것을 선호합니다.

SSMS에서 '문자로 결과 쿼리'를 선택하고 작은 답변(최대 20만 줄)을 선택하면 당연히 텍스트 편집기에 복사하여 붙여넣을 수 있습니다.여기서 저의 큰 답변을 위해 저는 물론 한 번에 20만 개 정도의 줄을 복사해서 울트라 에디트와 같은 텍스트 편집기에 10번 붙여넣을 수 있습니다.(2.5m를 한 번에 모두 시도하면 SSMS 안에서 메모리 경고가 나옵니다.)하지만 미래를 위해 저는 좀 더 우아한 해결책을 원합니다.

'파일에 결과 쿼리'의 경우 SSMS는 항상 .rpt 파일에 씁니다.(결과 창에서 마우스 오른쪽 버튼을 클릭하고 '다른 이름으로 저장'을 선택하면 위와 같은 메모리 오류가 발생합니다.)

--> 그래서 제 유일한 방법은 SSMS가 결과를 .rpt와 같은 파일로 출력한 다음 .rpt를 .txt로 변환하는 것입니다.

이 .rpt가 Crystal Reports 파일이라고 가정합니다.아니면 그렇지 않나요?PC에 Crystal Reports가 없어서 파일을 변환하는 데 사용할 수 없습니다.

Ultra-Edit에서 .rpt를 열면 괜찮아 보입니다.그러나 Excel의 Microsoft Query에서는 제목이 표시되지 않습니다.

VBA를 사용하여 .rpt를 읽고 쓰기만 하면 파일 크기가 절반으로 줄어듭니다.(330~180meg).Microsoft Query에서 제목이 표시됩니다(첫 번째 필드 이름에 이전에 완전히 다른 상황에서 발생한 재미있는 선행 문자가 있음에도 불구하고).엑셀에서 의미 있는 피벗 테이블을 할 수 있을 것 같습니다.

하지만 이 새로운 파일을 울트라에디트로 열었을 때, 한자가!어딘가에 아직도 재미있는 캐릭터들이 있을 수 있습니까?

--> 어딘가에 무료(그리고 단순/안전한) 변환기 앱이 있을 수도 있습니다.아니면 이 .txt가 내 VBA 프로그램을 읽기에 괜찮다고 믿어야 할까요?

감사해요.

파일: 하여 " Options > > Text > " Format"을SQL Server Management Studio "Query" "Query Options..." > "Query Options..." > "Results" > Text > "Output Format" "Comma Delimited" 입니다.을 "" " " " " " 에서 이름을 합니다..rpt.csvExcel에서 열립니다 :).

여기 제 해결책이 있습니다.

  • Microsoft SQL Server Management Studio 사용
  • 탭으로 구분된 .rpt 파일을 저장하도록 구성: '쿼리' > '쿼리 옵션' > '결과' > '텍스트' > '출력 형식'으로 이동한 후 ' 구분'을 선택합니다(확인 누름).

enter image description here

  • 이제 보고서를 만들 때 '인코딩으로 저장...메뉴를 선택하고 '유니코드'를 선택합니다(기본값은 '입니다.UTF8')

enter image description here

  • 이제 Excel로 파일을 열 수 있습니다. 모든 파일은 열로 되어 있으며, 이스케이프나 외국어 문자 문제가 없습니다(유니코드 인코딩으로 인해 파일이 더 클 수 있습니다).

한 친구의 도움으로 해결책을 찾았습니다. Rpt 파일은 MS SQL Server Management Studio에서 생성되는 일반 텍스트 파일이지만 ANSI 대신 UCS-2 Little Endian 인코딩을 사용합니다.

내보낸 파일을 텍스트 편집기에서 열고 유니코드에서 ASCII로 변환했습니다.텍스트 파일이 330메가에서 180메가로 줄었고, 이제 Excel의 Microsoft Query에서 열을 볼 수 있으며, VBA는 파일 및 프로세스 줄을 읽을 수 있습니다*.

추신: 또 다른 대안은 MS Access(큰 결과를 처리할 수 있음)를 사용하고 ODBC를 사용하여 데이터베이스에 연결하는 것이었습니다.하지만 그렇다면 MS SQL Server Management Studio의 T-SQL보다 명령어 수가 적은 Jet-SQL을 사용해야 할 것 같습니다.MS Access 2007에서 .adp로 새 파일을 만든 다음 T-SQL을 사용하여 SQL Server 백엔드를 만들 수 있습니다.그러나 MS Access 2010(내 PC)에서는 이 옵션이 더 이상 존재하지 않는 것 같습니다.

BCP를 사용할 수 있습니다.

명령 프롬프트를 열고 다음을 입력합니다.

SET Q="select * from user1.dbo.table1"
BCP.EXE %Q% queryout query.out -S ServerName -T -c -t
  • 사용할 수 있습니다.-U -P)로 표시됨)-T(SQL Authentication(SQL 인증)은 다음과 같습니다.
  • UNICODE에 문제가 . 사용자 이름은 "UNICODE"입니다.다음을 사용하여 코드 페이지를 강제로 설정할 수 있습니다.-C {code page}확실하지 않으면 850을 시도하십시오.

  • -t합니다. 할 수 . 쉼표로 변경할 수 있습니다.-t,

좋은 점은 이것을 VBA 실행 셸 명령에서 직접 호출할 수 있다는 것입니다.

이것이 당신이 그것을 할 수 있는 제가 생각하는 권장되는 방법입니다.


마이 소스(David Air의 답변)

그리드에 결과를 선택한 다음 그리드를 마우스 오른쪽 버튼으로 클릭하고 "다른 이름으로 결과 저장..."을 선택합니다. 그러면 CSV가 저장됩니다.

실제로 일부 값에 쉼표가 포함되어 있으면 결과 CSV가 제대로 이스케이프되지 않는 문제가 있습니다.RPT 파일에는 고정 너비 열이 포함되어 있기 때문에 실제로 매우 좋습니다.Excel의 경우 결과를 CSV로 변환하는 비교적 쉬운 방법은 Excel에서 RPT 파일을 여는 것입니다.이렇게 하면 텍스트 가져오기 마법사가 표시되고 Excel은 열을 추측하는 데 상당히 유용합니다.마법사를 수행한 다음 결과를 CSV로 저장합니다.

다음과 같은 이유로 "SQL Server 가져오기 및 내보내기 마법사"를 사용하는 것이 좋습니다.

  • 출력 파일은 .rpt 파일처럼 맨 아래에 상태 메시지가 표시되지 않습니다(예:"(100개 행이 영향을 받음)" 데이터 가져오기를 방해할 수 있음
  • 길이가 1자를 초과하는 사용자 지정 행 및 열 구분 기호를 지정하는 기능
  • 사용자 지정 소스와 대상 간 매핑을 지정하는 기능(예: 열 FirstName은 CSV의 first_name에 매핑할 수 있음)
  • SSMS 시스템에서 액세스할 수 있는 다른 데이터베이스로 직접 전송하는 기능
  • 파일 인코딩 및 로케일을 명시적으로 선택하는 기능

관리 스튜디오에서 데이터베이스를 마우스 오른쪽 버튼으로 클릭하고(테이블이 아닌 데이터베이스를 마우스 오른쪽 버튼으로 클릭해야 함) 작업 > 데이터 내보내기를 선택하여 액세스할 수 있습니다.

Selecting the data export tool from the SSMS object explorer

데이터 원본을 묻는 메시지가 나타나면 "SQL Server Native Client"를 선택하고 대상을 선택하라는 메시지가 나타나면 "Flat File Destination"을 선택할 수 있습니다.

그런 다음 사용할 테이블 또는 쿼리를 지정하라는 메시지가 표시됩니다.

도구에 대한 자세한 내용은 여기에서 확인할 수 있습니다.

https://learn.microsoft.com/en-us/sql/integration-services/import-export-data/start-the-sql-server-import-and-export-wizard?view=sql-server-2017

제 경우 SSMS에서 쿼리를 실행합니다(CTRL+Shift+F를 누르기 전에). 결과 창을 열어 rpt 파일로 저장할 수 없습니다(컴퓨터에 Crystal Report가 설치되어 있지 않음). 그래서... 다음에 쿼리를 실행할 때 확장자 *.txt로 설정된 (모든 파일)으로 저장하고 텍스트 파일로 읽을 수 있었습니다.

먼저 위의 방법 중 하나를 사용하여 .rpt 파일의 데이터를 가져옵니다.

고정 공간 열이 있는 기본 .rpt입니다.(262MB)

유니코드로 구분된 쉼표입니다.(52MB) - 사용했습니다.

파일 확장명을 .csv로 변경합니다.

Excel에서 열기/가져오기 및 데이터 확인파일 형식은 '텍스트 유니코드'입니다.

CSV(쉼표로 구분)로 저장하여 크기를 25MB로 줄입니다.

언급URL : https://stackoverflow.com/questions/10538162/convert-ssms-rpt-output-file-to-txt-csv

반응형