2012-06-20 3 views
3

sql plus 명령을 사용하여 oracle 데이터베이스에서 정보를 얻으려면 c-shell 스크립트로 작성된 스크립트를 다시 작성하려고하지만이를 mysql로 ​​바꾸고 있는데이를 대체하려고합니다. mysql 구문을 사용하는 모든 sqlplus 구문. 나는이 명령은 그래서 어딘가에 내가 말할 수 오전 follwing을sqlplus 명령을 mysql 명령으로 바꾼다

${SQLPLUS} ${MYDBUSER} @ &{REPORT} 

를 사용하여 SQL 플러스 명령을 호출하는 선을 따라

set SQLPLUS=${ORACLE_HOME}/bin/sqlplus 

set REPORT=${MYBD_HOME}/Scripts/report.sql 

을 무엇을 의미하는지 나에게 설명하기 위해 모든 C 쉘 전문가를 요구하고있다 나는 오른쪽 값의 의미 ({ORACLE_HOME}/bin/sqlplus)는 내 sqplus 명령이있는 경로이므로 명령과 {REPORT = $ (MYBD_HOME} /Scripts.report)를 호출하는 데 필요합니다. sql)은 sqplus 명령을 호출하여 실행할 SQL 스크립트가있는 경로입니다.

내가 이해하지 못하는 것은 set 명령이이를 초기화하는 것입니다. SQLPLUS 변수입니다. 그래서 내 .csh 스크립트에 넣으려고 할 때 경로를 입력하지 않아도됩니까? 내가 MySQL 데이터베이스에이 스크립트를 실행하기 위해 필요한 모든 단순히 SQLPLUS를 설정

다음 그렇다면 내 mSQL을 간부가 바로 여기서 경로를 가리 키도록 (problably MYSQL로 변경)

set MYSQL=${MYSQL_HOME}/bin/mysql 

그럼 그냥 내가 RO TUN MySQL의 테이블에서 데이터를 얻을 수있는 동일한 .tsch 스크립트를해야 ​​할 일이있다 MySQL의를 호출하고 SQL 문을

${MYSQL}${MYDBUSER}@${REPORT} 

를 실행?

답변

2

당신이 뭔가를해야합니다 :

${MYSQL} -u $username -p$password -D $database < ${REPORT} 

(사용자 이름과 암호를 당신은 사용자 이름을 구문 분석해야합니다 다르게 그들은 SQLPLUS로 전달보다 MySQL의 실행 파일에 전달하고있다. mysql 커맨드 라인 클라이언트에 해당하는 것은 "-u scott -ptiger -D scott"입니다.

@ (at 기호)는 SQLPlus 항목이며, $ {MYDBUSER}의 암호는 $ {MYDBUSER} 지정된 파일 이름에서 입력을 읽는 SQLPLus. mysql에 해당하는 것은 source 명령입니다. 예를 들어

${MYSQL} -u $username -p$password <_EOD! 
use $database 
source ${REPORT} 
_EOD! 

또한, 당신의 report.sql 파일 가능성이 spool 및 기타 SQLPLUS 특정 명령이 포함되어 있습니다. mysql 커맨드 라인 클라이언트는 SQLPlus만큼 강력하지는 않습니다.


부록 :

Q : 정확히 스풀은 무엇입니까?

SQLPlus spool 명령은 파일에 출력을 지시합니다. SQLPLus 세션에서 로그 파일을 만드는 데 자주 사용되며 보고서 파일을 만드는 데 유용합니다.

set trimspool on 
spool /tmp/file.lis 
select 'foo' as foo from dual; 
spool off 

Q : 내가 사용자 이름을 설정하고 변수에 passowrd하고 사용할 수 없습니다 이유는 무엇입니까?

변수를 설정할 수 있으므로 운영 체제로 보내지는 명령 줄의 최종 결과는 동일합니다.

set MYDBUSER="-u username -ppassword -D database" 
${MYSQL} ${MYDBUSER} <${REPORT} 

Q : MySQL이 SQLPLUS보다 장황 같이 보인다.

mysql 명령 행 클라이언트는 유닉스 스타일 옵션을 취한다. 이것들은 같습니다 :

mysql -u myusername -pmypassword -D mydatabase 
mysql --user=myusername --password=mypassword --database=mydatabase 
+0

정확하게 스풀은 무엇을합니까? – rambokayambo

+0

왜 cant 나는 변수에 사용자 이름과 passowrd를 설정하고 그것을 사용합니다. myql이 sqlplus보다 더 장황 해 보인다. – rambokayambo

+0

나는 이것을하려고 노력할 것이다. 내가 모든 스크립트를 다시 작성하는 것처럼 보입니다. MYDBUSER는 내가 상상하는 환경 변수이며 존재하지 않습니다. MYSQL_HOME과 MYDBUSER를 모두 내 env 변수에 추가해야합니다. 이 방법은 내 스크립트에서 mysql 명령을 실행할 수 있습니다. 나는 또한 mysql 데이터베이스에 로그인 할 때 username과 password를 대체해야한다고 생각한다. 마지막으로 내 보고서는 SQL 문을 실행하고 .log 파일을 만들어 어딘가에 저장합니까? 나는이 스풀 명령이하는 일을 무엇입니까? 어떻게 mysql에서 동일한 작업을 수행합니까? 감사합니다 – rambokayambo

관련 문제