• Vítejte na XBMC-Kodi.cz
  • Česko-slovenská komunita fanoušků XBMC/Kodi
Vítejte návštevníku! Přihlášení Registrace


Hodnocení tématu:
  • 0 Hlas(ů) - 0 Průměr
  • 1
  • 2
  • 3
  • 4
  • 5
Odstranění duplicit v MySQL databázi
#1
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. ;)
Jedu na: Kodi 18 - Skin Estuary Stream Cinema
Přehrávám na: AndroidTV Philips 50PUS7303/12 (Android 8.0, 4-core procesor, 2GB RAM)
Data skladuji na: NAS Synology DS115j ve kterém je disk WD Red 2TB
Vše je propojeno pomocí: MikroTik RouterBOARD RB951G-2HnD
 
Citovat
  


Přejít na fórum:


Prochází: 1 host(ů)