Operace v SQL

Z MoodleDocs
Přejít na:navigace, hledání

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 }'