
Wir müssen die Datentypen vergleichen. Ich habe TXT-Dateien mit Datentypen erstellt und eine Abfrage geschrieben, um die Datentypen aus der Netezza-Systemtabelle abzurufen (wir verwenden die Netezza-Datenbank) und in eine TXT-Datei zu exportieren. Und ich habe einen diff -q
Befehl verwendet, um hervorzuheben, ob es Abweichungen gibt. Tatsächlich erhalte ich korrekte Ergebnisse, wenn es eine Übereinstimmung gibt, aber es werden keine Abweichungen hervorgehoben. Ich habe möglicherweise vergessen, eine korrekte Echo-Fehlermeldung oder etwas anderes auszugeben, um das erwartete Ergebnis zu erzielen. Insgesamt müssen 10 Dateien überprüft werden, also habe ich eine For-Schleife verwendet.
Ich habe den folgenden Code ausprobiert, aber wenn Sie über eine einfache Logik oder andere Erkenntnisse verfügen, wäre das hilfreich.
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`;
Und ich erwarte eine Ausgabe wie unten.
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
Antwort1
Ich bin nicht sicher, was Sie genau mit „Hervorheben“ der Unterschiede zwischen den beiden Dateien meinen, aber Sie können Folgendes verwenden, diff
um die Unterschiede zwischen den beiden Dateien anzuzeigen:
diff file1 file2 | grep "<" | sed 's/^<//g'
zur Anzeige auf stdout
was zu folgendem Ergebnis führt:
skywalker@endor:~/scripts/python/proxyupdate$ diff proxyupdate.py proxyupdate.bak | grep "<" | sed 's/^<//g'
#this line is added for testing
oder
diff file1 file2 | grep "<" | sed 's/^<//g' > file3.txt
um in eine neue Datei zu schreiben.
oder Sie können auch versuchen sort
:
sort file1 file2 | uniq -u
was zum selben Ergebnis führt:
skywalker@endor:~/scripts/python/proxyupdate$ sort proxyupdate.py proxyupdate.bak | uniq -u
#this line is added for testing