Найти количество строк в каждой таблице в большой базе данных SQLite - PullRequest
2 голосов
/ 09 октября 2019

У меня есть база данных SQLite с большим количеством таблиц. Я хотел бы выяснить, какие строки имеют ноль (и отбросить их). Я не очень далеко! Что я могу сделать, это перечислить таблицы, используя этот SQL:

SELECT tbl_name FROM sqlite_master WHERE type = 'table'

Есть ли способ в SQLite превратить это в цикл и распечатать COUNT (*) для каждой из таблиц?

(NB. Я смотрел на Рекурсивные выражения общих таблиц (CTE) , но не понимаю, как они могут помочь.)

1 Ответ

0 голосов
/ 12 октября 2019

Есть ли способ в SQLite превратить это в цикл и распечатать COUNT (*) для каждой из таблиц?

Благодаря магии sqlite3, ответ таков:да, если мы допустим, что sqlite3 является частью SQLite.

В любом случае, техника очень удобна.

Предполагая, что $ db является интересующим файлом базы данных:

echo "SELECT 'SELECT count(*), \"' || name || '\" FROM ' || name || ';'  FROM sqlite_master WHERE type = 'table';" |
    sqlite3 -readonly "$db" | sqlite3 -readonly "$db"

Для известной базы данных flight.db это приводит к:

8107|airports
6048|airlines
67663|routes
1|sqlite_stat1
24|sqlite_stat4

Сезон по вкусу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...