2014-01-29 5 views
4

나는 주기적으로 bash에서 데이터베이스 테이블을 쿼리하기 위해 간단한 루프를 설정하려고한다. 일반적으로 내가해야 할 것 같다 : sqsh에 명령을 전달하고 한 번에 파일 출력을 가져 오는 방법은 무엇입니까?

sqsh -s SERV -U user -P passwd -D db -L bcp_colsep=',' 

다음 sqsh 내에서 내가 입력 할 필요가

:

select * from some_table where foo=bar 
\go -m bcp > /path/to/output.out 

이 같은 명령에 전달 sqsh하는 -C 옵션을 사용하려고 시도했다 :

sqsh -s SERV -U user -P passwd -D db -L bcp_colsep=',' -C 'select * from some_table where foo=bar \go -m bcp > /path/to/output.out' 

그러나 나는 점점 계속 :

Incorrect syntax near '\'. 

원하는 효과를 얻으려면 어떻게해야합니까?

답변

9

-C 옵션을 사용하여 sqsh에 SQL 문을 전달하면 \ go 명령이 암시 적으로 실행됩니다. 'bcp'결과 스타일을 얻으려면 -L 매개 변수를 사용하여 'style = bcp'변수를 설정하거나 -mbcp를 명령 행 매개 변수로 사용하여 출력을 파일로 리디렉션하거나 sqsh -o 매개 변수를 사용해야합니다 출력 할 파일 이름을 지정합니다.

sqsh -S SERV -U user -P passwd -D db -L bcp_colsep=',' -m bcp \ 
-C 'select * from some_table where foo=bar' > /path/to/output.out 

HTH, 마틴

: 그러니까 기본적으로 명령과 같을 것이다