сгенерировать SQL-запрос из аргументов

сгенерировать SQL-запрос из аргументов

Я пытаюсь создать SQL-запрос из предоставленных пользователем аргументов.

Допустим, имя схемы, имя таблицы и некоторые условия задаются аргументами.

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

На основе приведенных выше аргументов я могу сгенерировать следующий оператор SQL:

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

В следующий раз мы воспользуемся следующими аргументами:

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

и нас интересует только фильтрация dob. Поэтому SQL-запрос будет таким:

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

Я застрял, создавая это. Если whereесть два аргумента условия, то поместите все в запрос с ANDмежду ними. Если whereуказано только одно условие, то просто используйте только его.

решение1

Вас бы это устроило?

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

Первый аргумент — это schema.tableи следующие аргументы используются для WHEREпредложения.

Выход:

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

Связанный контент