У меня есть простой вопрос: как удалить все индексы таблицы sqlite? У меня есть несколько индексов, созданных со случайным именем.Как удалить все индексы таблицы sqlite
С уважением,
Pentium10
У меня есть простой вопрос: как удалить все индексы таблицы sqlite? У меня есть несколько индексов, созданных со случайным именем.Как удалить все индексы таблицы sqlite
С уважением,
Pentium10
Я не в курсе, что вы можете оставить все индексы в одной команде - IMO вы должны отказаться от каждого по имени. Смотрите также: http://www.sqlite.org/lang_dropindex.html Кроме того, проверить это для получения дополнительной информации: Drop all tables command
Чтобы получить имена всех индексов в базе данных
SELECT name FROM sqlite_master WHERE type == 'index'
Для конкретной таблицы:
SELECT name FROM sqlite_master WHERE type == 'index' AND tbl_name == 'table Name'
Затем на вашем языке, итерация подумал о результатах и опустил их
FOR x IN RESULTSET
SQL = "DROP INDEX " & X
#!/bin/bash
DB=your_sqlite.db
TABLE="some_table"
INDEXES="$(echo "SELECT name FROM sqlite_master WHERE type == 'index' AND tbl_name = '$TABLE;" | sqlite3 $DB)"
for i in $INDEXES; do
echo "DROP INDEX '$i';" | sqlite3 $DB
done
Убедитесь никакой другой процесс не обращается к базе данных, в то время как вы называете этот сценарий, или, если это еще не возможно добавить
PRAGMA busy_timeout=20000;
в каждом echo
, что вы посылаете в базу данных
мне нужно сбросить индексы только таблица, не все из базы данных. – Pentium10