Operace v SQL: Porovnání verzí
mBez shrnutí editace |
|||
Řádek 8: | Řádek 8: | ||
$ psql -P fieldsep=\; -Atc "\d" moodle | cut -d \; -f 2 | $ psql -P fieldsep=\; -Atc "\d" moodle | cut -d \; -f 2 | ||
Viz možné použítí v diskusi [http://moodle.cz/mod/forum/discuss.php?d=1660] | |||
==Kontrola ID sekvencí v PostgreSQL== | ==Kontrola ID sekvencí v PostgreSQL== |
Aktuální verze z 3. 10. 2007, 09:43
Tato stránka obsahuje různé tipy a triky při práci a údržbě s Moodlovskou SQL databází. Je orientována na správce pracující na Linuxové konzole na úrovni shellu a s nativními textovými klienty, např. psql
nebo mysql
.
Seznam všech tabulek Moodlu
Následující řádek vrátí seznam všech tabulek v databázi moodle. Hodí se, pokud provádíte hromadné operace pomocí shell skriptu (např. odstranění všech tabulek s určitým prefixem apod.).
$ psql -P fieldsep=\; -Atc "\d" moodle | cut -d \; -f 2
Viz možné použítí v diskusi [1]
Kontrola ID sekvencí v PostgreSQL
Téměř každá tabulka v Moodlovské databázi (asi až na dvě výjimky) obsahuje sloupec ID, jehož hodnota se zvyšuje automaticky. V PostgreSQL se pro určení další hodnoty používá sloupec last_value v sekvenci mdl_table_id_seq. Ve zcela výjimečných a nestandardních situacích (jako např. při přechodu z MySQL na PostgreSQL je nutno ručně zkontrolovat, zda je v sekvenci uložena správná hodnota pro následující identifikátor řádku. Pak se může hodit následující skript.
#!/bin/bash tables=`psql -P fieldsep=\; -Atc "\d" moodle | grep -v "_id_seq" | cut -d \; -f 2` echo table last_value max_id for table in $tables; do echo $table `psql -tc "select last_value from ${table}_id_seq" moodle` `psql -tc "select max(id) from ${table}" moodle` done
Příklad použití, který vypíše jen ty tabulky, u nichž je hodnota currval() menší než max(id) - což je chyba, která může vést k selhání zapsání do databáze.
./compareids.sh | awk '$2 < $3 { print $0 }'