
我們需要比較資料類型。我創建了帶有資料類型的 .txt 文件,並編寫了一個查詢以從 netezza 系統表(我們使用 netezza 資料庫)獲取資料類型並匯出到 .TXT 文件。我已經使用diff -q
命令來突出顯示是否有任何不匹配。實際上,每當匹配時我都會得到正確的結果,但如果有任何不匹配,它不會突出顯示。我可能錯過了給出正確的回顯錯誤訊息或其他內容以按預期獲得。
我嘗試了下面的程式碼,但如果您有任何簡單的邏輯或任何見解都會有所幫助。
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