2011-03-11 7 views
3

SQL Server (2005, 2008)의 "다른 이름으로 결과 저장 ..."옵션을 사용할 때 CSV가 발생하지만 SQL Server가 올바른 CSV 작성을 고려하지 않습니다.SQL Server 문제가있는 CSV 파일 만들기

특히, 데이터에 쉼표가 포함되어 있으면 해당 필드는 큰 따옴표로 묶이지 않습니다. 필자가 지금보고있는 특정 데이터 세트에는 큰 따옴표가있는 필드가 포함되어 있지 않지만 SQL Server가 올바르게 입력되었는지는 확실하지 않습니다.

매주 나는 약 36k 행을 생성하는 원격 서버의 데이터베이스에 대한 쿼리를 실행해야하며 CSV 형식으로 내 사무실의 누군가에게 다시 가져와야합니다. 지금까지 데이터를 복사 한 다음 원격 데스크톱을 통해 Excel에 붙여 넣었습니다. 그러나 원격 클립 보드에서 36k 행을 붙여 넣는 작업은 꽤 오래 걸립니다. Excel은 모든 종류의 "대기 OLE 작업 완료"메시지 상자가 발생합니다.

쿼리를 실행하고 결과를 원격 서버 자체에 CSV로 저장 한 다음 파일을 복사하는 것을 선호합니다.

장기간 나는 이것을 자동으로 처리하는 프로세스를 작성 하겠지만 몇 년 전부터 SQL Server에이 문제가 있었지만 고통의 수준은 아직까지 해결책을 찾기에 충분하지 않았습니다. 지금.

+0

첫째, 누군가가 준은 "QUOTENAME"대답에 무슨 일이 있었는지 : exec_script.zip 여기

은 샘플 사용입니다 : 여기

은 링크입니까? 그것은 아름답게 일했습니다. 둘째, 모든 사람들 모두에게 감사드립니다. 그러나 이들 모두는 반복적으로 실행되는 동일한 쿼리에 맞춰져 있습니다 (당연히 내가 준 예제입니다). SQL Server Management Studio의 처리를 "수정"하는 솔루션이있는 것 같지 않습니다. 내가 버그라고 말하는 것이 아니기 때문에 나는 개인적으로 그 행동을 좋아하지 않는다고 말하면서 따옴표로 수정을한다. –

+0

'Quotename' 답변은 텍스트 <= 128 자에서만 작동하므로 nuked되었습니다. '선택 쿼트 네임 (N '' 'Twas brillig 및 끈적 끈적한 토브는 wabe에서 선회하고 민첩했다 : 모든 멍청이는 보로 고 브와 mome raths outgrabe'였습니다. ',' ")' –

+0

지시 사항을 사용하여 내 대답을 업데이트했습니다. 텍스트로 출력 할 때 구분 기호를 지정하는 방법 –

답변

1

메뉴 항목 Tools> Options를 선택하면 Options 대화 상자가 나타납니다. 옵션 대화 상자에서 쿼리 결과> SQL Server> '결과를 텍스트'로 이동합니다. '출력 형식'항목 '사용자 정의 구분 기호'를 선택하십시오. '사용자 정의 구분 기호'필드에 구분 기호를 지정하십시오. 저장하려면 확인을 클릭하십시오.

쿼리 창을 열고 쿼리> '결과'를 선택하고 '결과를 파일'또는 '결과를 텍스트'로 선택하십시오. 지정된 분리. 자로 출력 될 조회를 실행하십시오.

자동화 된 프로세스를 위해 SQL Server BCP 명령 줄 유틸리티를 사용하여 SQL Server에서 데이터를 출력하십시오. 명령 줄 스위치를 통해 구분 기호 및 텍스트 한정자를 완벽하게 제어 할 수 있습니다. BCP를 사용하는 것은 매우 쉽습니다. 장기적인 프로세스의 다른 요소가 제자리에 없더라도 사용하는 것이 좋습니다.

저장 프로 시저를 사용하여 압축 및 FTP로 전송되는 BCP를 호출하는 자동화 된 프로세스가 있습니다. 야간에 클라이언트. 내 프로세스는 SQL Server 시스템의 예약 된 작업에 의해 시작된 배치 파일에서 실행됩니다.

1

죄송 합니다만, 저는 지금 Windows 상자가 아닙니다. SQL Management Studio의 쿼리 관리자 응용 프로그램에 대해 이야기하고 있습니까?

원하는 작업을 수행하는 가장 좋은 방법은 SQL Server와 함께 제공되는 데이터 가져 오기/내보내기 도구를 사용하는 것입니다 (죄송합니다. 지금은 이름을 확인할 수 없음).

+0

좋은 생각 네빌. 내가 한번 살펴 보겠다. 최소한 반복적으로해야만하는 것들에 대해서. –

1

SQL Server 버그가 아닌 SSMS 버그처럼 들립니다. 나는 조의 대답이 당신의 문제를 해결할 것이라고 생각합니다.

Integration Services를 사용할 수있는 경우이를 살펴 보길 바랍니다. 패키지를 한 번에 열어 볼 수 있습니다.

1

나는 꽤 오랫동안 결과 세트를 CSV 파일로 내보내는 사내 VBS 스크립트를 사용 해왔다.

c:>cscript //nologo exec_script.vbs /s:MyServer /d:MyDb /q:"exec MyStoredProc" /r:MyFile.csv /header 
+0

그건 내가 좀 파고 들기에 충분할거야.하지만 스크립트 파일을 가져 주셔서 감사합니다. 그것을 통해 실행하고 내 요구에 그것을 사용하는 방법을 참조하십시오. –