So schreiben Sie ein Shell-Skript unter Verwendung der Bedingung aus einer Datenbank

So schreiben Sie ein Shell-Skript unter Verwendung der Bedingung aus einer Datenbank

Dies ist die Bedingung, die ich überprüfen muss

select count(*) from nm.table1 where column1 =true; 

Jetzt sollte es aus der Datenbank (PostgreSQL) kommen und IF THEN ELSE LOOPim Unix verwendet werden

Etwas wie

if [ $count > 1]
then
  echo " Successful"
else
  exit
fi

Antwort1

Im Folgenden wird davon ausgegangen, dass der Unix-Benutzer, der psql ausführt, über ein PostgreSQL-Konto verfügt, das auf „nm.table1“ zugreifen kann. Wenn nicht, müssen Sie auch Authentifizierungsdetails für psql angeben.

Der beste Weg, dies zu tun, ist ein~/.pgpassDatei mit den Authentifizierungsdetails.

Sobald die Authentifizierung geklärt ist, psqlist das Abrufen von Daten aus Abfragen genauso einfach wie das Abrufen von Daten aus jedem anderen Befehl, StandardBefehlsersetzungmacht den Job.

Für möchten wir die Option oder psqlverwenden, um das Drucken von Kopf- und Fußzeilen zu deaktivieren, und die Option oder für den nicht ausgerichteten Druckmodus (d. h. keine zusätzlichen Leerzeichen drucken, um die Ausgabe aufzufüllen). Und natürlich die Option oder , um anzugeben , dass das nächste Argument ein auszuführender SQL-Befehl sein wird.-t--tuples-only-A--no-align-c--commandpsql

count=$(psql -tAc 'select count(*) from nm.table1 where column1=true;')

if [ "$count" -gt "1" ] ; then
  echo " Successful"
else
  exit
fi 

verwandte Informationen