Есть ли чистый запрос sqlite для поиска строки в базе данных?
С небольшим количеством оболочки я могу извлечь схемы из таблиц:
for i in *sqlite;
do sqlite3 $i ".tables"
| grep -Eoh "[^ ]+"
| while read t; do
echo -n "$i:$t ";
sqlite3 $i '.schema "'"$t"'"';
done;
echo;
done
Тогда я мог бы найти, какой столбец имеет тип TEXT, и сделать запрос.
Но есть ли чистый SQL-способ сделать это в терминале?
SQLite разработан как встроенная база данных и, следовательно, имеет только чрезвычайно базовые возможности программирования (у него есть триггеры, но нет логики управления, например, if
или loop). Таким образом, невозможно сделать что-либо динамическое в SQL - результат PRAGMA table_info
не может быть непосредственно использован в SQL-запросах.
Очень быстрый и грязный способ поиска везде в базе данных - показать все содержимое с помощью .dump
а затем просто grep
. Однако это не так быстро, потому что поиск индексированных столбцов будет быстрее в SQL.