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

1602

    Vastaukset 3

    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. Mikä tästä teki

      Lopulta niin vaikeaa?
      Ikävä
      109
      1037
    2. Nainen, minkä tiedon juuri nyt haluaisit

      tietää hänestä, miehestä?
      Ikävä
      74
      935
    3. Mitä vikoja

      kaivatussasi on?
      Ikävä
      59
      871
    4. Meistä puhutaan

      Meistä varmaan puhutaan ja huhutaan. Luulen niin. Ei kiva juttu. Ja ystävät on minusta huolissaan. Yritän tehdä kaikkeni
      Ikävä
      57
      797
    5. 52
      754
    6. Uunimakkara koululaisten suosikki

      https://www.is.fi/ruokala/ajankohtaista/art-2000012228523.html on tärkeää että oppilaat syövät hyvin, muuten ei jaksa p
      Maailman menoa
      274
      710
    7. Mitä mieltä miehet ovat 40-50v naisista?

      Rehellisesti. Mitä ajattelet kun naiselle tulee ikäää
      Ikävä
      106
      641
    8. Ihmettelen vieläkin miten pitkäksi aikaa

      Loukkaannuit mies. Taidat olla pitkävihainen.🫤
      Ikävä
      69
      566
    9. Noniin myönnetään

      Rakastan aivan kauheasti ❤️
      Ikävä
      17
      552
    10. Rönttä-Volvo

      Onko muut panneet merkille kylällä rallikuskia larppaavan nuoren miehen ja allaan mustan V70 Volvon? Ajaa kuin heikkopäi
      Haapavesi
      17
      537
    Aihe