2016-08-02 21 views
0

bcp를 사용하여 일련의 SSMS 쿼리에서 데이터를 출력하는 배치 파일을 만들었습니다.배치에서 bcp를 사용하는 다중 행 SQL 쿼리

가독성과 유지 보수를 위해

, 나는 각 쿼리를 설정하고 싶은 같은 나는 BCP 호출 내에서 참조 할 것 여러 줄, 스패닝 변수 : 나는 캐럿을 찾았다 고

SET myQuery = 
"select a, b, c, d " 
"from tableA a " 
"inner join tableB b " 
"on a.Id = b.ID " 
"where a.value < .99 " 
"order by a.Id " 


bcp %myQuery% queryout C:\myDir\filenameOut.txt -S ServerName -T -c 

을 연산자를 사용하여 유사한 작업을 수행 한 후 다음과 같이 적용 :

SET myQuery = 
"select a, b, c, d "^
"from tableA a "^
"inner join tableB b "^
"on a.Id = b.ID "^
"where a.value < .99 "^
"order by a.Id " 

오류 메시지가 표시됩니다 :

"[첫 줄 내용]이 (가) 내부 또는 외부 명령, 작동 가능한 프로그램 또는 배치 파일로 인식되지 않습니다."

그러면 라인이 제대로 연결되지 못하게됩니다.

나는 배치 파일이 일반적으로 이와 같은 여러 줄 작업과 잘 맞지 않는다는 것을 알고 있지만이를 달성하기위한 간단한 방법이 있습니까?

+0

를 원하는 것입니다. –

+0

@GordonLinoff, '키워드'는 SQL 쿼리의 내용을 의미합니까? – Chris

답변

0
"select a, b, c, d"^
"from tableA a"^
"inner join tableB b"^
"on a.Id = b.ID"^
"where a.value < .99"^
"order by a.Id" 

나는 이것이 될 것으로 기대합니다.

select a, b, c, dfrom tableA ainner join tableB bon a.Id = b.IDwhere a.value < .99order by a.Id 

문제점을 확인하십시오.

이 당신이 당신은 키워드의 주위에 더 많은 공간을 필요

select a, b, c, d from table A a inner join table B b on a.Id = b.ID where a.value < .99 order by a.Id 
+0

동일한 오류의 마지막 결과를 제외하고 각 줄에 큰 따옴표를 추가하기 전에 추가 공간을 추가하십시오. – Chris

+0

@chris 나는 당신이 bcp 접두사를 붙이지 않는다고 생각합니다 - 그 오류 메시지는 SQL 서버가 아닌 창에서 온 것입니다. – Hogan

+0

이 모든 것은 배치 파일을 통해 호출됩니다. 쿼리를 평평하게하고 추가 큰 따옴표 및 캐럿을 제거하면 잘 실행됩니다. 내가/어떻게 더 읽기/유지 보수 할 수 있도록 한 줄에서 '블록'쿼리를 만들 수 있을지 물어 보는 중입니다. – Chris