| Autor | Zpráva | ||
|---|---|---|---|
| quatzael Profil |
#1 · Zasláno: 19. 2. 2014, 06:31:51
V databázi mám poměrně dost tabulek kde se nachází některé shodné sloupce (se stejnými názvy).
Potřeboval bych nějakým příkazem, pokud by to šlo, přenastavit všechny sloupce v celý databázi. Tzn. dejme tomu, že v databázi se nachází 20 tabulek se sloupcem "column1" a já bych potřeboval, aby nějaký SQL příkaz vyhledal všechny tyto sloupce a u všech nastavil jednotný typ, velikost, popřípadě další vlastnosti.. Je na to nějaké jednoduché řešení? |
||
| Kajman Profil |
#2 · Zasláno: 19. 2. 2014, 09:22:33
quatzael:
„Je na to nějaké jednoduché řešení?“ Ne. Budete si muset naprogramovat něco, co najde všechny tabulky s daným sloupcem a udělá postupně na každou zvlášť alter příkaz. Myslím, že ruční změna 20 tabulek bude rychlejší :-) |
||
| peta Profil |
#3 · Zasláno: 19. 2. 2014, 09:52:59
SHOW COLUMNS FROM `tablename` -- vytahne jmena sloupcu
http://stackoverflow.com/questions/4165195/mysql-query-to-get-column-names SHOW TABLES; -- vytahne seznam tabulek Kdyz to spojis nejak pres funkci... |
||
| Kajman Profil |
peta:
Ale kuš. Přeci nebude dělat pro každou tabulku dotaz na sloupce, když to jde jedním dotazem. |
||
| quatzael Profil |
#5 · Zasláno: 19. 2. 2014, 11:28:34
Kajman:
„Myslím, že ruční změna 20 tabulek bude rychlejší :-)“ Jenže tam se nejedná jen o jeden sloupec, ale prakticky o cca stovku.. Navíc hledat ručně těch cca 20 tabulek, kde je zrovna ten daný sloupec, v X tabulkách mi taky nepřijde moc jako příjemně strávený čas.. Naprogramovat se mi to nezdá zase tak pracný jenom neumím to SQL.. Viděl bych to takhle nějak: 1. Příkaz SHOW TABLES - uložím si to do nějakýho pole
2. cyklem foreach projedu celý to pole a vždycky hodím podmínku, jestli daná tabulka obsahuje daný sloupec. když jo, provedu ten příkaz ALTER
|
||
| jenikkozak Profil |
#6 · Zasláno: 19. 2. 2014, 11:32:30
Co to máš za děsivou databázi? Proč ji nejprve nedáš do nějakého použitelného uspořádání?
|
||
| quatzael Profil |
#7 · Zasláno: 19. 2. 2014, 11:47:02
jenikkozak:
„Co to máš za děsivou databázi?“ Je tam toho holt hodně, no.. navíc tam ještě bude hafo podobných tabulek přibývat, takže bych potřeboval nějaký efektivnější způsob při upravování.. ten phpMyAdmin je děsně pomalej. „Proč ji nejprve nedáš do nějakého použitelného uspořádání?“ To se teď právě snažím.. |
||
| peta Profil |
Kajman: ? viz link na to forum, tam to je.
quatzael: Phpmyadnin zvlada vice sql dotazu najednou. Pouziva se to treba pri importu. Proc chces menit zadani sloupcu? Stejne sloupce se vyvedou do externi tabulky a propoji ideckem. idecko je INT autoincrement, to neni treba menit. Nedava mi to prilis smysl. |
||
| Kajman Profil |
#9 · Zasláno: 19. 2. 2014, 12:48:13
quatzael:
„ten phpMyAdmin je děsně pomalej“ Zkuste adminer. „Jenže tam se nejedná jen o jeden sloupec, ale prakticky o cca stovku.“ Nastudujte si databázové normální formy a tabulky navrhněte tak, aby je splňovaly. Pak takové zběsilosti nebudou potřeba. Link s ukázkou generovní alterů, které mají smysl. http://php.vrana.cz/prevod-kodovani-mysql.php |
||
| quatzael Profil |
#10 · Zasláno: 19. 2. 2014, 13:25:35
Kajman:
„Přeci nebude dělat pro každou tabulku dotaz na sloupce, když to jde jedním dotazem.“ Jo, tohle jsem moc nepochopil. Jak jedním dotazem..?? peta: „Stejne sloupce se vyvedou do externi tabulky a propoji ideckem. idecko je INT autoincrement, to neni treba menit. Nedava mi to prilis smysl.“ Kajman: „Nastudujte si databázové normální formy a tabulky navrhněte tak, aby je splňovaly. Pak takové zběsilosti nebudou potřeba.“ Tohle docela chápu. Ale nějak nevím jestli má cenu zacházet zase až do takových extrémů. Částečně to tak někde mám udělaný, ale předělávat celou databázi na tenhle systém mi nepříjde moc šikovný (to už je jednodušší přepsat ty sloupce).. Navíc nějak mi jde proti srsti, abych měl v databázi potom 10krát až 100krát víc tabulek než teď.. To už bude totálně nepřehlednější. Navíc mít v jednom sloupci věci z různých kategorií se mi zdá taky nepraktický, jednak proto, že už se to nedá spravovat manuálně v tom phpMyAdmin, (Třeba kdybych chtěl z nějakého důvodu upravit jeden záznam) a pak ty dotazy do databáze jsou daleko pracnější.. |
||
| peta Profil |
#11 · Zasláno: 19. 2. 2014, 13:34:44
quatzael:
Myslel jsem klasicke propojeni tabulek pres id. --- tab1 --- id_tab1, id_tab2, id_tab3, nejaky text, datum id_tab2, text id_tab3, cislo, text, ip "abych měl v databázi potom 10krát až 100krát víc tabulek než teď.. To už bude totálně nepřehlednější" To zalezi na navrhu, optimalizaci. Muzes udelat treba 10 zakladnich tabulek pro data (id,cislo; id,text; id;blob) a do ostatnich to prenaset pres id. To je narust rekneme o 10 tabulek. Vyber a ukladani bude malinko slozitejsi, ale nebudes mit duplicitni zaznamy. |
||
| Kajman Profil |
#12 · Zasláno: 19. 2. 2014, 13:51:14
quatzael:
„Jak jedním dotazem..?“ SELECT * FROM information_schema.columns WHERE column_name = 'column1' |
||
| quatzael Profil |
#13 · Zasláno: 19. 2. 2014, 14:03:28
Kajman:
A tím teda získám rovnou všechny sloupce ze všech tabulek? A jak na tenhle výběr navážu tím příkazem ALTER? |
||
|
Časová prodleva: 12 let
|
|||
0