Portál AbcLinuxu, 8. května 2025 08:15
soubor0: jednoznackyidentifikator | boolhodnota | stringhodnota | ... souborN: jednoznackyidentifikator | nejakadalsihodnota | zaseneco | ... ...Potřebuju data z těchto souborů dostat do DB. Můj plán je následující: pro každý soubor vytvářet automaticky tabulku, jejíž název bude sha1 hash názvu souboru (kvůli rozlišování písmen, nepovoleným znakům aj.), v každé tabulce bude jednoznackyidentifikator PK. Někde stranou si budu v aplikaci udržovat seznam názvů souborů, které chci procházet (nemusím chtít všechny). Takový je můj plán. V nespočetně mnoha článcích jsem se ale dočetl, že není dobré měnit strukturu databáze (vytvářet tabulky) dynamicky a dost se od toho odrazuje. Tzn. že by byla lepší jedna tabulka, ve které by byla data ze všech souborů? Není to blbost?
1/ vícero tabulkami soubor0: identifikator | sloupec1 | sloupec2 ----------------------------------- fasd8fSDd6 | 0 | retezec soubor1: identifikator | sloupec1 | sloupec2 ----------------------------------- fasd8fSDd6 | false | -51 ... a pak join using identifikator ... moznost where, order ... 2/ jednou tabulkou soubor | identifikator | sloupec | hodnota_bool | hodnota_varchar | hodnota_int --------------------------------------------------------------------------------- soubor0 | fasd8fSDd6 | sloupec1 | NULL | NULL | 0 soubor0 | fasd8fSDd6 | sloupec2 | NULL | retezec | NULL soubor1 | fasd8fSDd6 | sloupec1 | false | NULL | NULL soubor1 | fasd8fSDd6 | sloupec2 | NULL | NULL | -51 tady nevim, jaky dotaz pouzit?Nemůžu se zbavit dojmu, že za 2/ je takové čistější, ale asi také o dost pomalejší (??).
select identifikator from soubor1 where (sloupec1 = 'neco' AND sloupec2 = 'necojine') OR sloupec2 = 'necojine2' order by sloupec1, sloupec2 desc limit 300 offset 2;To je jeden z typických dotazů nad daty a teď si neumím představit variantu pro jedno(dvou)tabulkové řešení. Asi tam budou nějaké vnořené dotazy a nějaký union, ale sql tak dobře neznám.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.