Zadejte hledaný výraz...
Jakub Glos
Webtrh.cz
Vývoj webových stránek na WordPressu a proklientský přístup pro freelancery
Třídenní infromacemi nabitý prezenční + online kurz v Praze od Webtrhu pouze za 2 871 Kč
Více informací

Jak na hromadné přejmenování prefix tabulek?

Luděk Kvapil
verified
rating uzivatele
24. 3. 2016 09:59:49
Potřebuju přejmenovat prefix tabulek. Je jich fakt hodně, takže se mi to ručně nechce dělat. Je nějaký příkaz na hromadné přejmenování tabulek? Prefix je všude stejný, takže je to jen nahrayení řetězec za řetězec.
24. 3. 2016 09:59:49
https://webtrh.cz/diskuse/jak-na-hromadne-prejmenovani-prefix-tabulek/#reply1185037
anakonda
verified
rating uzivatele
(4 hodnocení)
24. 3. 2016 10:09:07
Otevři se db v pspadu a pomocí funkce nahradit.
24. 3. 2016 10:09:07
https://webtrh.cz/diskuse/jak-na-hromadne-prejmenovani-prefix-tabulek/#reply1185036
Luděk Kvapil
verified
rating uzivatele
24. 3. 2016 10:18:06
Napsal anakonda;1279346
Otevři se db v pspadu a pomocí funkce nahradit.
To mě také napadlo, ale děsně velký soubor a nechce se mi stahovat a nahrávat.. Tak se ptám, jak to udělat rovnou na serveru.
24. 3. 2016 10:18:06
https://webtrh.cz/diskuse/jak-na-hromadne-prejmenovani-prefix-tabulek/#reply1185035
TomasX
verified
rating uzivatele
(4 hodnocení)
24. 3. 2016 10:35:35
Jedná se o mysql? Máš práva admina? Měníš pouze prefix?
Mysql má příkaz "rename table", buď si můžeš udělat proceduru, který si vytáhne názvy tabulek a přímo zavolá příkaz na přejmenování nebo si můžeš nejprve vygenerovat sqlka pro přejmenování a poté je v php adminu spustit. Během přejmenování bys měl mít vypnutý web a na mysql nesmí být žádné locky a otevřená spojení kromě tvého.
Tenhle kód ti vygeneruje sql příkazy pro změnu prefixu z "wp" na "wp2". Pokud máš jiný prefix, je nutné změnit číslo v substr na délka prefixu + 1. Klidně sem napiš z jakého na jaký prefix to máš a změním sql. Psáno z hlavy, tak se za případné sql chyby omlouvám. Spuštění tohoto příkazu nemá žádné destruktivní následky, pouze skládá sql pro přejmenování, které musíš poté ručně spustit.
Doplnění: je také vhodné přejmenování omezit pouze pro jednu databázi (kdybys jich náhodou měl přístupných více, viz ten poslední řádek)
24. 3. 2016 10:35:35
https://webtrh.cz/diskuse/jak-na-hromadne-prejmenovani-prefix-tabulek/#reply1185034
Luděk Kvapil
verified
rating uzivatele
24. 3. 2016 10:49:30
Napsal TomášX;1279353
Jedná se o mysql? Máš práva admina? Měníš pouze prefix?
Mysql má příkaz "rename table", buď si můžeš udělat proceduru, který si vytáhne názvy tabulek a přímo zavolá příkaz na přejmenování nebo si můžeš nejprve vygenerovat sqlka pro přejmenování a poté je v php adminu spustit. Během přejmenování bys měl mít vypnutý web a na mysql nesmí být žádné locky a otevřená spojení kromě tvého.
Tenhle kód ti vygeneruje sql příkazy pro změnu prefixu z "wp" na "wp2". Pokud máš jiný prefix, je nutné změnit číslo v substr na délka prefixu + 1. Klidně sem napiš z jakého na jaký prefix to máš a změním sql. Psáno z hlavy, tak se za případné sql chyby omlouvám. Spuštění tohoto příkazu nemá žádné destruktivní následky, pouze skládá sql pro přejmenování, které musíš poté ručně spustit.
Doplnění: je také vhodné přejmenování omezit pouze pro jednu databázi (kdybys jich náhodou měl přístupných více, viz ten poslední řádek)
Jsem na svém localhostu, takže jsem root. Teď to zkouším přes prefix. Adminer mi zkopíroval tabulky a přidal prefix copy_, takže to budu zaměňovat. Ovšem ještě snažší by bylo, kdybych si ty tabulky vlastně zkopíroval a jen k nim dal jiný prefix. Zůstanou ve stejné db.
Ještě k těm tabulkám.. Kolik je rozumné mít v jedné databázi tabulek? Ten prefix bude jazyková lokalizace. Některé tabulky budou společné, jiné se budou lišit právě v tom prefixu. Už jsem se dostal na tisíc tabulek na jednu db... Trochu se obávám, jestli to v ostrém provozu nebude moc pomalé.
24. 3. 2016 10:49:30
https://webtrh.cz/diskuse/jak-na-hromadne-prejmenovani-prefix-tabulek/#reply1185033
i-PRESS
verified
rating uzivatele
(2 hodnocení)
24. 3. 2016 11:00:02
Napsal siva01;1279354
Už jsem se dostal na tisíc tabulek na jednu db...
A to jsou opravdu všechno relační data? Nebylo by (třeba na část) lepší použít nějakou dokumentovou databázi? MySQL a obecně relační databáze není jediný typ a dost často ani nejvhodnější..
Netuším ale samozřejmě, o co jde, 1K tabulek se mi ale zdá příliš..
24. 3. 2016 11:00:02
https://webtrh.cz/diskuse/jak-na-hromadne-prejmenovani-prefix-tabulek/#reply1185032
Luděk Kvapil
verified
rating uzivatele
24. 3. 2016 11:16:37
- zde to hlásí chybu syntax error... Ty divné apostrofy tam mají být?
24. 3. 2016 11:16:37
https://webtrh.cz/diskuse/jak-na-hromadne-prejmenovani-prefix-tabulek/#reply1185031
TomasX
verified
rating uzivatele
(4 hodnocení)
24. 3. 2016 12:24:05
sorry, za tím concat má být sql v uvozovkách
Ty divné uvozovky je uvození tabulek, aby v nich mohli být i nehezké znaky nebo klíčová slova, člověk nikdy neví, jak se tabulky jmenují.
Tenhle příkaz ti ty tabulky defacto přesune na nový název, takže operace je velice rychlá a původní názvy již nebudou.
Dávat do názvů tabulek jazyk není obecně vhodné, používalo se dříve, teď už to moc nevídám, jsou s tím akorát problémy (klidně se mohu rozepsat více). MySQL zvládne i desetitisíce tabulek. Co tě omezuje je jejich velikost. Další problém s mnoha tabulkami je, že phpmyadmin, adminer a další si načítají nějaký describe tabulek a při hodně tabulkách to trvá dlouho a zbytečně to zatěžuje server.
Tisíc tabulek u mysql negeneruje nijak větší náročnost a samotná databáze s tím nebude mít problémy. Zpomalit ti to ale výrazně může právě nějaké phpmyadminy, adminery.
Vše ale nasvědčuje špatné struktuře databáze a nejspíš se ti to vymstí někdy později. Doporučení dávat data do dokumentové databáze bych spíše neposlouchal, vzniknou ti s tím jiné problémy, chová se to jinak, máš pryč konzistenci, administrace a přehledy jsou také trochu odlišné. Pokud chceš konzultovat, klidně napiš, databázím se věnuji profesionálně.
24. 3. 2016 12:24:05
https://webtrh.cz/diskuse/jak-na-hromadne-prejmenovani-prefix-tabulek/#reply1185030
Pro odpověď se přihlašte.
Přihlásit