2016-09-04 5 views
1

Ich bin in der Lage, einfache Auswahl/Löschen von Abfragen von Postgres über Ansible Playbook ausführen. Aber wenn meine Abfrage ein einzelnes Anführungszeichen enthält, schlägt es fehl. Wie kann ich einem einzelnen Zitat entkommen?So fliehen einzelne Anführungszeichen in Postgres Abfrage über ansible

Beispiel

Das läuft gut:

command: psql -U dbuser dbname -c 'SELECT count(*) from table;' 

Ich möchte dies auszuführen:

command: psql -U dbuser dbname -c 'SELECT count(*) from table where time <= '01-sep-2016';' 

Aber mir Fehler gibt.

Antwort

1

nicht sicher, wie es in ansible Textbuch funktionieren würde, aber es gibt in der Regel drei Möglichkeiten, um damit umzugehen:

  • Verwendung doublequotes um die Abfrage

    command: psql -U dbuser dbname -c "SELECT count(*) from table where time <= '01-sep-2016';" 
    
  • Verwendung Backslash:

    command: psql -U dbuser dbname -c 'SELECT count(*) from table where time <= \'01-sep-2016\';' 
    
  • Verwendung zitiert zweimal in Folge:

    command: psql -U dbuser dbname -c 'SELECT count(*) from table where time <= ''01-sep-2016'';' 
    
+0

Danke, doppelte Anführungszeichen funktionieren. – xmen81

0

Sie könnten nur doppelte Anführungszeichen in der Shell verwenden und einfache Anführungszeichen innerhalb des SQL:

$ psql -U dbuser dbname -c "SELECT count(*) from table where time <= '01-sep-2016';" 
# Here --------------------^-------------------------------------------------------^ 
+0

Danke, es funktioniert. – xmen81

Verwandte Themen