Työhaastattelussa kysyttiin, miten tietokannan sisällön voi tulostaa. Sen muistin, että jos kannassa on taulu T, niin sen sisällön saa selville kyselyllä
select * from T.
Mutta miten saan selville, minkä nimisiä tauluja kannassa on?
Eikös tuo anna yksittäisen taulun kentät, ei kaikkia tauluja? Vai onko mun aivot taas solmussa?
Voit myös käyttää SHOW DATABASES komentoa.
SHOW COLUMNS mistä
kertoo tietyn tietokannan taulut, SHOW DATABASES
tietokantojen nimet jne...
No jos kyseessä on vaikka mysql, niin mysql-dump voisi olla kova sana.
Mielestäni kysymys on vähintään outo jos ei tiedetä mistä tietokannasta on kyse.
Vastaisin varmaan, että:
Mikäli tietokantaan on käytössä dumppaustyökalu, niin sillä. Jos taas tarkoitus oli että pitäisi itse tehdä ohjelma, niin enumeroisin taulut siten, kuin käytössä oleva tietokanta ja/tai tietokantaframeworkki mahdollistaa ja sitten tulostaisin loopissa kunkin taulun sisällöt.
Outo kysymys johtuu siitä, että tuota kysyttiin haastattelussa ja en tiennyt sitä.
Jooh, no haastattelussa voisi tietysti kysyä että mikä tietokanta on kyseessä.
Kannan dumppaus ei ole minusta kovin kätevä temppu, koska dataa tulee herkästi aika paljon eikä suurinta osaa siitä yleensä kaivata.
Vielä tiivistelmä MySQL:n tapauksessa hyödyllisistä kyselyistä:
SHOW DATABASES; SHOW TABLES IN kanta; DESC kanta.taulu; SHOW CREATE TABLE kanta.taulu;
No jos tarkoitus on tulostaa kannan sisältö, niin minusta kannan sisällön näyttäminen nimenomaan on "kätevä temppu". Sitä vartenhan siellä kannassa on erilliset taulut ja niistä voi rajata hakuja, että ei tarvitsisi koko sisältöä näyttää normaalikäytössä joka kerta. Mutta nyt kuitenkin tehtävänanto oli "tulostaa kannan sisältö".
Toki tuollainen toive on hyvä kyseenalaistaa. Mielestäni aika hämärä kysymys kaiken kaikkiaan. Voin kuvitella että jos olisin itse työhaastattelussa ja tulisi sanasata sanaan tuollainen kysymys niin varmasti vähintään tulisi pyöriteltyä silmiä. Riippuu tietty vähän. Jos haastattelijana olisi joku myyntimies, niin sitten olisi helpompi ymmärtää. Tai sitten tehtävänä olikin että kyseenalaistaa tehtävänannon mielekkyyden eikä ala selittää vastausta kysymykseen.
Grez kirjoitti:
Toki tuollainen toive on hyvä kyseenalaistaa.
Joo, itse olen tottunut töissä kantaan, josta tulee reilusti yli gigan dumppi. Siitä vain tekstieditorilla tutkimaan...
Tulisi siitä tulostettunakin sitten varmasti muutama laatikollinen paperia :D
Grez kirjoitti:
Mielestäni kysymys on vähintään outo jos ei tiedetä mistä tietokannasta on kyse.
Kyse oli enemmän ongelmanratkaisukyvystä kuin tietyn kannan spesifisestä osaamisesta. Kielen ja kannan sai valita vapaasti.
Niin, no edelleen olen sitä mieltä että jos kanta ylipäätään on niin pieni, että toiveessa on jotain järkeä, niin kannan mukana tuleva dumppaustyökalu. Menee 5 sekuntia ja homma on hoidettu.
Aihe on jo aika vanha, joten et voi enää vastata siihen.