gerar uma consulta SQL a partir de argumentos

gerar uma consulta SQL a partir de argumentos

Estou tentando fazer uma consulta SQL a partir de argumentos fornecidos pelo usuário.

Digamos o nome do esquema, o nome da tabela e algumas condições em que são fornecidas pelos argumentos.

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

A partir dos argumentos acima, posso gerar a instrução SQL abaixo:

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

Da próxima vez, usaremos os seguintes argumentos

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

e estamos interessados ​​apenas em filtrar arquivos dob. Portanto, a consulta SQL seria

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

Estou preso construindo isso. Se houver dois whereargumentos de condição, coloque tudo na consulta ANDentre eles. Se apenas uma wherecondição for fornecida, use apenas ela.

Responder1

Isso funcionaria para você?

#!/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"

O primeiro argumento é schema.tablee os seguintes argumentos são usados ​​para a WHEREcláusula.

Saída:

$ ./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%';

informação relacionada