2017-09-27 1 views
0

우리에게는 DEV, UAT 및 PRD 환경이 있습니다. 우리는 최근 20 개의 새로운 스키마와 120 개의 테이블을 만들었습니다. PO_DEV_SPD가 데이터베이스 이름이라고 가정하십시오. 이 스키마 아래에 테이블을 만들었습니다. 이제 데이터베이스 이름 대신 환경 변수를 사용하고 싶습니다. $ SPDDB.MY_ACCOUNT와 같습니다. 저장 프로 시저뿐만 아니라 테이블을 생성하는 동안이 env 변수를 어떻게 사용할 수 있습니까?Teradata에서 데이터베이스 이름에 환경 변수를 사용하여 테이블 및 저장 프로 시저를 만드는 방법은 무엇입니까?

업데이트 : 생성 DDLs

CREATE MULTISET TABLE $SPDDB.tbl_employee 
(
name VARCHAR(20), 
id INT, 
roll_no INT 
) 
PRIMARY INDEX (id, roll_no) 

나는 DDLs/DMLs를 만드는 동안 쉘 스크립트를 사용하여 ENV 변수를 사용할 수 있습니까?

+0

DDL을 실행하기 전에 CREATE TABLE 및 DATABASE DEV;에 데이터베이스 이름이 없습니다? – dnoeth

+0

@dnoeth 표를 만들 때 qualifier.tablename을 언급합니다. 필자의 경우이 한정어는 데이터베이스 이름/스키마 이름입니다. 이제는 쉘 스크립팅을 사용하여 env 변수를 만들고 DDL 및 DML을 만드는 동안이를 사용하려고합니다. – Nandan23

+0

쉘에서 SQL 스크립트를 만든 다음 클라이언트 응용 프로그램을 통해 실행할 수 있도록 제출할 수 있습니다. –

답변

0

다음은 올바른 방향으로 사용자를 안내하는 예제입니다.

BTQLOGLOGON의 경로는 허구이며 우수 사례가 아닙니다. 사용자 환경에 적합한 경로 및 사용자 환경에 적용되는 보안 매개 변수로 바꾸십시오.

#!/usr/bin/ksh 
SPDDB='PROD' 
BTQLOG='/var/opt/log/bteq.log' 
LOGON='/var/opt/logon/bteq.con' 
# 
bteq <<EOBTQ > $BTQLOG 2>&1 
.RUN file=${LOGON} 

CREATE MULTISET TABLE $SPDDB.tbl_employee 
(
name VARCHAR(20), 
id INT, 
roll_no INT 
) 
PRIMARY INDEX (id, roll_no); 

.QUIT ERRORLEVEL; 

EOBTQ 
# 
# 
STATUS=$? 
# 
exit $STATUS 
관련 문제