데이터 유형을 비교해야 합니다. 데이터 유형이 포함된 .txt 파일을 생성하고 netezza 시스템 테이블(우리는 netezza 데이터베이스 사용)에서 데이터 유형을 가져와 .TXT 파일로 내보내는 쿼리를 작성했습니다. diff -q
불일치가 있는지 강조 표시하기 위해 명령을 사용했습니다 . 실제로 일치하는 항목이 있을 때마다 올바른 결과를 얻지만 불일치하는 항목이 있으면 강조 표시되지 않습니다. 올바른 에코 오류 메시지나 예상대로 얻을 수 있는 내용을 제공하지 못했을 수도 있습니다. 확인할 파일이 총 10개라서 for 루프를 사용했습니다.
아래 코드를 시도했지만 간단한 논리나 통찰력이 있으면 도움이 될 것입니다.
for <condition>
do
TABLE_ddl="SELECT TYPE_NAME FROM SYSTEM.._V_SYS_COLUMNS WHERE TABLE_NAME = '${TABLENAME}name';
echo ${TABLE_ddl};
CURRENT_TEMP_DDL=`nzsql -h ${hostname} -db ${database} -u ${username} -pw ${password} -A -t -o ${PATH}/${TABLENAME}_TABLE.TXT -c "${TABLE_ddl}"`
echo ${CURRENT_TABLE_DDL};
done
CHECK=`diff -q ${PATH}/${TABLENAME}_FILE.txt ${PATH}/${TABLENAME}_TABLE.TXT`;
나는 다음과 같은 결과를 기대하고 있습니다.
tablename
CURRENT_TEMP_DDL #Query which should reflect with table name
datatypes matched
For ex.
employee
select type_name from system.._v_sys_columns where table_name = 'employee' and database =<dbname>
datatypes matched for employee_FILE.txt and employee_TABLE.TXT
department
select type_name from system.._v_sys_columns where table_name = 'department' and database =<dbname>
datatypes unmatched for department_FILE.txt and department_TABLE.TXT
답변1
두 파일 간의 차이점을 "강조 표시"한다는 것이 정확히 무엇을 의미하는지 잘 모르겠지만 이를 사용하여 diff
두 파일 간의 차이점을 표시할 수 있습니다.
diff file1 file2 | grep "<" | sed 's/^<//g'
표준 출력으로 표시
결과는 다음과 같습니다.
skywalker@endor:~/scripts/python/proxyupdate$ diff proxyupdate.py proxyupdate.bak | grep "<" | sed 's/^<//g'
#this line is added for testing
또는
diff file1 file2 | grep "<" | sed 's/^<//g' > file3.txt
새 파일을 작성합니다.
아니면 다음을 시도해 볼 수도 있습니다 sort
.
sort file1 file2 | uniq -u
동일한 결과가 생성됩니다.
skywalker@endor:~/scripts/python/proxyupdate$ sort proxyupdate.py proxyupdate.bak | uniq -u
#this line is added for testing