2016-12-13 3 views
-1

Oracle DB에서 파일로 sqlplus를 사용하려고하는데 그 테이블의 마지막 열이 기본 빈 문자열이므로 처리 방법은 무엇입니까?sqlplus를 사용하여 Oracle DB에서 파일로 스키마 이름을 제공해야합니다. 스키마 이름을 제공해야합니다.

참고 : Oracle 데이터베이스에있는 세 번째 열을 확인하고 마지막 열이 비어 있지 않으면 스크립트가 다른 테이블에서 제대로 작동하지만이 마지막 열의 빈 테이블에서는 오류가 발생합니다.

오류 정보는 다음과 같습니다

[[email protected] scripts]$ ./myscript.sh 
|| TRIM(THIRD_COLUMN) FROM TEST_TABLE 
       * 
ERROR at line 3: 
ORA-00942: table or view does not exist 

관련 SQLPLUS는 다음과 같습니다 :

My_Table="TEST_TABLE" 
sqlplus -s ${USER}/${PASS}@${HOST} <<EOF 
SET PAGESIZE 0 
SET COLSEP "|" 
...some SET here... 
SPOOL $FILE 
Select TRIM(FIRST_COLUMN)|| '|' 
|| TRIM(SECOND_COLUMN)|| '|' 
|| TRIM(THIRD_COLUMN) FROM $My_Table; 
SPOOL OFF 
EXIT 
EOF 

가 어떻게이 빈 문자열 특히 다른 모든 컬럼과 함께 마지막 열을 끌어 할 수 있습니까? 알아낼 수있는 누군가가 있었습니까, 고마워요.

답변

0

오류는 문제가 열이 아니라 전달하는 테이블이 $My_Table임을 제안합니다. 변수를 잘못 전달하고 있습니다. 그걸보세요 thread.
$My_Table은 bash에서 가변적입니다. 스크립트를 실행할 때 첫 번째 단계는 SQLplus를 실행하고이 변수가 존재하지 않습니다. 귀하의 경우에는

이해야 뭔가 같은 :

./myscript.sh $My_Table $FILE 

그리고 $FILE

대신에 $My_Table&2 대신 스크립트를 사용 &1에 그리고 당신은 그런 식으로 쿼리를 만들 경우 돈 쿼리의 결과가 SET COLSEP "|" 일 필요가 없으므로 COLSEP 또는 ||을 사용하여 모든 열을 연결하십시오.

+0

i hav e 오류 메시지를 다시 확인하고 올바른 형식으로 편집하려면 다시 확인해야합니까? 귀하를 혼란스럽게 할 수있는 이전의 잘못된 정보에 대해 고맙고 유감스럽게 생각합니다. – Lampard

+0

@ Lampard 지금 사용해보세요. 문제는 passin 변수가 잘못 입력 된 것 같습니다. – Kacper

+0

입력 변수 문제 때문에 sqlplus 부분 앞에 'My_Table = "TEST_TABLE"을 설정하고 여기에 원래 게시물을 추가하십시오. 여전히이 문제가 마지막 빈 열 – Lampard