2013-11-18 3 views
1

Перед работой с таблицей мне нужно проверить, что схема таблицы полностью соответствует исполняемому коду. Я знаю, что есть команда .schema tablename, результат которой может быть хэширован и сравнен с хэш-кодом реальной схемы. Проблема заключается в том, что хранимая схема содержит все избыточные символы, используемые при создании таблицы (повторение вкладок, пробелов, новых строк), и если я изменю количество пробелов в схеме внутри следующей версии моего кода, таблица не будет распознана.Проверка схемы таблицы SQLite

Я не хочу анализировать каждый столбец со всеми его свойствами вручную.

Я не могу просто удалить повторяющиеся пробелы путем разделения & join или regexp, потому что иногда они не повторяются, но все же чрезмерны (например, возле скобки открытия).

Это очень обычная задача - проверка схемы таблицы, но я не вижу способ эффективно ее реализовать.

UPD

Еще один возможный способ, которым я имею в виду: создание временной таблицы и сравнить это схема с целевой таблицы, используя некоторые внутренние функции SQLite. Может ли это работать?

+0

Может ли это быть сделано программно? Если да, сначала получите список всех таблиц ('.tables') для каждого, запустите' pragma table_info (table); ' – Dan

+0

@Dan. То, что я имел в виду под« разобрать каждый столбец со всеми его свойствами вручную ». Это возможно, но трудно – astef

+0

@ Dan. Моя идеальная проверка - это просто сравнение двух хэшей – astef

ответ

2

Возможные решения: PRAGMA schema_version; или PRAGMA user_version;commands.

Там есть несколько вариантов их использования для проверки схемы таблицы, но я уверен, что вы найдете подходящий способ

Смежные вопросы