
Temos um requisito para comparar os tipos de dados. Criei arquivos .txt com tipos de dados e escrevi uma consulta para obter os tipos de dados da tabela do sistema netezza (estamos usando o banco de dados netezza) e exportar para o arquivo .TXT. E usei diff -q
o comando para destacar se há alguma incompatibilidade. Na verdade, estou obtendo resultados corretos sempre que há correspondência, mas não estou destacando se há alguma incompatibilidade. Talvez eu tenha esquecido de fornecer mensagens de erro de eco corretas ou algo mais para obter o resultado esperado. Um total de 10 arquivos precisa ser verificado, então usei o loop for.
Tentei o código abaixo, mas se você tiver alguma lógica simples ou algum insight seria útil.
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`;
E estou esperando uma saída como abaixo.
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
Responder1
Não tenho certeza do que você quer dizer exatamente com "destacar" a diferença dos dois arquivos, mas você pode usar diff
para exibir as diferenças dos dois arquivos:
diff file1 file2 | grep "<" | sed 's/^<//g'
para exibir em stdout
que produzirá o resultado:
skywalker@endor:~/scripts/python/proxyupdate$ diff proxyupdate.py proxyupdate.bak | grep "<" | sed 's/^<//g'
#this line is added for testing
ou
diff file1 file2 | grep "<" | sed 's/^<//g' > file3.txt
para gravar em um novo arquivo.
ou você também pode tentar sort
:
sort file1 file2 | uniq -u
que produz o mesmo resultado:
skywalker@endor:~/scripts/python/proxyupdate$ sort proxyupdate.py proxyupdate.bak | uniq -u
#this line is added for testing