Generieren einer SQL-Abfrage aus Argumenten

Generieren einer SQL-Abfrage aus Argumenten

Ich versuche, eine SQL-Abfrage aus benutzerdefinierten Argumenten zu erstellen.

Nehmen wir an, der Schemaname, der Tabellenname und einige andere Bedingungen werden durch die Argumente angegeben.

schema='myschema'
table='testtable'
where_column='dob'
where_column2='firstname'

Aus den obigen Argumenten kann ich die folgende SQL-Anweisung generieren:

select * from myschema.testable where dob **i can add some value later** and firstname **some value**

Das nächste Mal verwenden wir die folgenden Argumente

schema='myschema'
table='testtable'
where_column='dob'

und wir sind nur am Filtern interessiert dob. Die SQL-Abfrage wäre also

select * from myschema.testable where dob ** I can add some value later**

Ich stecke beim Erstellen fest. Wenn zwei whereBedingungsargumente vorhanden sind, fügen Sie alles mit ANDdazwischen in die Abfrage ein. Wenn nur eine whereBedingung angegeben ist, verwenden Sie nur diese.

Antwort1

Wäre das für Sie in Ordnung?

#!/bin/bash

from=$1; shift # remove the first argument from $@

for i; do
  if [ -n "$where" ]; then # if "$where" is not empty then...
     where+=" AND "
  fi
  where+="$i"
done

printf 'SELECT * FROM %s WHERE %s;\n' "$from" "$where"

Das erste Argument ist schema.tableund die folgenden Argumente werden für die WHEREKlausel verwendet.

Ausgabe:

$ ./script.sh myschema.table "dob = 'dib'"
SELECT * FROM myschema.table WHERE dob = 'dib';
$ ./script.sh myschema.table "dob = 'dib'" "firstname = 'Bhuvanesh'" "foo LIKE 'bar%'"
SELECT * FROM myschema.table WHERE dob = 'dib' AND firstname = 'Bhuvanesh' AND foo LIKE 'bar%';

verwandte Informationen