XBMC-Kodi.cz
Odstranění duplicit v MySQL databázi - Verze k tisku

+- XBMC-Kodi.cz (https://www.xbmc-kodi.cz)
+-- Fórum: Obecná diskuse (https://www.xbmc-kodi.cz/forum-obecna-diskuse)
+--- Fórum: Tipy, triky a návody (https://www.xbmc-kodi.cz/forum-tipy-triky-a-navody)
+--- Téma: Odstranění duplicit v MySQL databázi (/prispevek-odstraneni-duplicit-v-mysql-databazi)



Odstranění duplicit v MySQL databázi - Bartyx - 11.10.2017

Ahoj.
Ptal jsem se tady na fóru, ale nedostal jsem odpověď, takže jsem pátral jinde.
Jde o to, že jsem si omylem nechal celou knihovnu ze Stream Cinema oscrapovat více zařízeními najednou. 
Následek je takový, že sice *.strm soubor je vždy jen jeden, ale při použití sdílené databáze se vytvoří více záznamů jednoho filmu.
Pro představu to u mě došlo do takového stavu, že místo cca 14500 filmů ve Stream Cinema jsem měl 16900 filmů. Takže docela dost duplicit.
Řešení je vcelku jednoduché. Zkoumal jsem strukturu tabulky "movie", ve které jsou data o filmech uložená a zjistil jsem, že jediný schůdný sloupec pro identifikaci duplicit je cesta k *.strm souboru. Vše ostatní se může více či méně opakovat u více filmů (název, rok, popis je moc dlouhý a ID vytvoří dvojí u duplicit). Takže jsem vyšpekulovatl MySQL dotaz, který duplicity vyhledá podle té cesty a odstraní je.

Upozorňuji, že byste si předtím měli udělat kompletní zálohu databáze pro případ selhání!

Pak stačí spustit následující dotaz uvnitř vaší databáze, která se vždy jmenuje "MyVideos***" místo hvězdiček nějaké číslo.

Kód:
CREATE TABLE movie_temp AS SELECT * FROM movie GROUP BY c22;
DROP TABLE movie;
RENAME TABLE movie_temp TO movie;

Dotaz vpodstatě vytvoří druhou tabulku movie_temp, do které přehraje všechny řádky, které mají jedinečný záznam ve sloupci c22 (ten obsahuje cestu k souboru .strm). Poté smaže původní tabulku "movie" a nahradí ji tou novou, která už duplicity neobsahuje.

Celá operace trvala asi tak 3 vteřiny. ;)