2011-08-02 3 views
0

본질적으로 동일한 this 질문을 보았지만 OP는 '다른 도구 사용'을 대답으로 받아 들였습니다. 기본적으로 테이블에서 구분 된 파일로 데이터를 내보내려고하지만 8192 자 제한 때문에 출력 텍스트가 잘리지 않습니다. 나는 (적어도 나를 위해) 일하는 좋은 접근법을 찾을 수 없었다.8192 파일로 내보낼 때 텍스트 열에 대한 제한 사항이 있습니까?

SSMSsqlcmd (제한 사항이 여기에 적용되는지 확실하지 않음. 현재 시도 중입니다.) 유일한 대안은이 제한 사항을 해결하고 더 높은 너비의 텍스트 열을 덤프 할 수있는 방법입니까?

답변

2

간단한 PowerShell 스크립트 나 C#을 사용하는 명령 줄 응용 프로그램을 사용 해본 적이 있습니까? 가능하다면 모든 데이터를 SELECT 할 수 있으면 모든 것을 파일에 쓸 수 있어야합니다. 2011-08-03

편집 나는이 PowerShell을 또는 SQLCMD 작업을 얻을 수 없습니다. 전자는 4000 자, 출력은 256 자로 줄였습니다. 그러나 내 오랜 친구 인 VBScript는 새롭고 반짝이는 것이 항상 최선은 아님을 다시 한번 입증했습니다. 코드는 작성하는 것이 훨씬 지루하지만 작동합니다. .vbs 파일로 저장하고 2, 3, 6 행을 적절하게 변경합니다 (더 많은 열, 데이터 변환, 다른 구분 기호 등을 원할 경우 9 개).

set conn = createobject("ADODB.Connection") 
conn.open "provider=SQLOLEDB.1;data source=.;user id=user;password=pass;" 
set rs = conn.execute("SELECT VarcharMaxCol FROM dbo.TableName") 

set fso = createobject("Scripting.FileSystemObject") 
set f = fso.CreateTextFile("c:\path\from_vbs.csv", true) 

do while not rs.eof 
    f.writeline vbCrLf & rs(0) 
    rs.movenext 
loop 

rs.close : set rs = nothing 
conn.close : set conn = nothing 
f.close : set f = nothing 
set fso = nothing 

내 PowerShell 전문가 친구가 4K 이상을 처리하는 방법에 대한 답변을 얻으려면 여기에 다시 게시됩니다.

+0

+1 - Powershell은 아마도이 문제를 해결하는 방법 일 것입니다. – JNK

+0

+1 감사합니다. 나는 이것을 해결책으로 받아 들였지만 PowerShell 스크립트를 사용하여 어떤 의미인지에 대한 예를 들려 줄 수 있습니까? 전체 테이블이 너무 커서 어떤 일을하는지는 # TEMP 테이블에 숫자를 만들고 결과 테이블을 원래 테이블에 결합하여 결과를 얻는 것입니다. – Legend

+0

@Legend VBScript에서 작동하는 솔루션으로 답변을 업데이트했습니다 (알고 있습니다, * shudder *). –

관련 문제