duplikaatit

Pilssimies

MySQL-tietokannassa on n. puoli miljoonaa riviä ja nyt sinne lorahti rapiat 47000 riviä tuplasti. Miten nuo tuplat saa kätevimmin pois?

3

1589

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • I.Proqatlis

      1. Luo aputaulu, joka on alkuperäisen taulun kopio.

      2. Siirrä alkuperäisen taulun sisältö aputauluun valitsemalla vain uniikit rivit alkuperäisestä taulusta. Malli:

      insert into aputaulu (sarake1, sarake2, sarake3)
      select distinct sarake1, sarake2, sarake3 from oikeataulu;

      3. Aseta aputaulu alkuperäisen tilalle.


      Millainen tietokanta sinulla oikein on?? Se ei ole relaatiomallin mukainen, jos sinne pystyy tekemään duplikaatteja. Yksi relaatiomallin perussäännöistä - koskien tiedon yhtenäisyyttä eli integriteettiä - on, että jokainen rivi taulussa on uniikki. Tämä hoidetaan valitsemalla sopiva avain, joka estää duplikaattien syntymisen!

      • Xcvt

        "Se ei ole relaatiomallin mukainen, jos sinne pystyy tekemään duplikaatteja. Yksi relaatiomallin perussäännöistä - koskien tiedon yhtenäisyyttä eli integriteettiä - on, että jokainen rivi taulussa on uniikki. Tämä hoidetaan valitsemalla sopiva avain, joka estää duplikaattien syntymisen!"

        Kyllä mielestäni relaatiomallin mukaiseen tauluun voi vahingossa tehdä duplikaatteja. Tai se mitä yleensä dublikaatilla tarkoitetaan kansantajuisesti, sanatarkastihan silloin ei ole kyseessä dublikaatti koska esim id on eri.

        Tuo I.Proqatlisin ehdotus toimii vain jos sinulla ei ole samoja tietoja tauluissa ennen tuota vahinkoa. Mikäli on, niin silloin tuo poisto on vaikeeta koska sinun pitää tietää mitkä sinne todella kuuluu ja mitkä ei. Ehkä helpointa olisi tehdä DELETE kysely noilla tiedoilla mitkä tuli tuplasti ja sit tiedot uudestaan mikäli vain mahdollista.

        Tietenkin jos tieto on jotenkin aikasidottua niin silloinhan I.Proqatlisin ehdotus toimii WHERE ehdoilla.
        Siis
        insert into aputaulu (sarake1, sarake2, sarake3, lisätty)
        select distinct sarake1, sarake2, sarake3, lisätty from oikeataulu WHERE lisätty = '28-2-2007';

        ja

        insert into aputaulu (sarake1, sarake2, sarake3, lisätty)
        select sarake1, sarake2, sarake3, lisätty from oikeataulu WHERE lisätty != '28-2-2007';


      • Xcvt kirjoitti:

        "Se ei ole relaatiomallin mukainen, jos sinne pystyy tekemään duplikaatteja. Yksi relaatiomallin perussäännöistä - koskien tiedon yhtenäisyyttä eli integriteettiä - on, että jokainen rivi taulussa on uniikki. Tämä hoidetaan valitsemalla sopiva avain, joka estää duplikaattien syntymisen!"

        Kyllä mielestäni relaatiomallin mukaiseen tauluun voi vahingossa tehdä duplikaatteja. Tai se mitä yleensä dublikaatilla tarkoitetaan kansantajuisesti, sanatarkastihan silloin ei ole kyseessä dublikaatti koska esim id on eri.

        Tuo I.Proqatlisin ehdotus toimii vain jos sinulla ei ole samoja tietoja tauluissa ennen tuota vahinkoa. Mikäli on, niin silloin tuo poisto on vaikeeta koska sinun pitää tietää mitkä sinne todella kuuluu ja mitkä ei. Ehkä helpointa olisi tehdä DELETE kysely noilla tiedoilla mitkä tuli tuplasti ja sit tiedot uudestaan mikäli vain mahdollista.

        Tietenkin jos tieto on jotenkin aikasidottua niin silloinhan I.Proqatlisin ehdotus toimii WHERE ehdoilla.
        Siis
        insert into aputaulu (sarake1, sarake2, sarake3, lisätty)
        select distinct sarake1, sarake2, sarake3, lisätty from oikeataulu WHERE lisätty = '28-2-2007';

        ja

        insert into aputaulu (sarake1, sarake2, sarake3, lisätty)
        select sarake1, sarake2, sarake3, lisätty from oikeataulu WHERE lisätty != '28-2-2007';

        Tarkennuksena, tietueita onkin n. 1,2 milj. Sarakkeita on 105. Jokainen tietue on erilainen lukuunottamatta niitä 47000 kpl jotka ovat siis kahteen kertaan. Kiitos tähän astisista neuvoista.


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Lopetin kokonaan ravintoloissa ruokailun ja juomisen

      Ravintoloissa hinnat ovat aivan naurettava korkealla. Alkoholin juomisessa ravintoloissa ei ole senkään vertaa järkeä.
      Maailman menoa
      180
      2785
    2. Omakotitalossa väkivaltaa ounasrinteellä

      Kertoo iltalehdet Mitä lienee Tapahtui. Verinen ihminen kannettu lanssiin
      Rovaniemi
      22
      2334
    3. kukaan ei pakota kasteeseen..

      Kommentointi estetty, joten kommentoin tähän.Kukaan ei pakota pakkokasteesta puhuvaa kastamaan lastansa.Noloa edes ehdot
      Kaste
      400
      1095
    4. Mari Rantanen eroa! Lausunnot vapun pahoinpitelystä ovat järkyttäviä!

      Poliisiministerin, eli sisäministeri Mari Rantasen on syytä erota!
      Maailman menoa
      154
      1052
    5. Mitä ikävöit eniten

      kaivatussasi? 🫶
      Ikävä
      66
      967
    6. Anabaptismin kirous

      Uudestikastetut lahkolaiset joutuvat valheen kierteeseen. He joutuvat herjaamaan lapsena saamaanssa kastetta nimeen Isä
      Kaste
      410
      945
    7. Kai odotan että

      Juokset vielä perässäni
      Ikävä
      67
      918
    8. Kerrohan T miehelle yksi syy

      Miksi hänen tulisi kaivata sinua?
      Ikävä
      109
      826
    9. Rakas, haluan sut niin hulluna kuin olet, tiedän jo sun pakkomielteet ja muut jutut, ihana naiseni

      Kunhan et minun takia satuta itseäsi tai muita, minulla nyt ole niin väliä. Rakas mä ymmärrän ja näen kaiken, sun suure
      Ikävä
      48
      754
    10. Euroviisuhuitelua

      En ole koko viisuista kiinnostunut enkä aio edes katsoa kisoja. Ihmetyttää tämä vouhkaaminen laulaja pariskunnasta joka
      80 plus
      36
      701
    Aihe