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

1489

    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. Kotkalainen Demari Riku Pirinen vangittu Saksassa lapsipornosta

      https://www.kymensanomat.fi/paikalliset/8081054 Kotkalainen Demari Riku Pirinen vangittu Saksassa lapsipornon hallussapi
      Kotka
      86
      2331
    2. Olen tosi outo....

      Päättelen palstajuttujen perusteella mitä mieltä minun kaipauksen kohde minusta on. Joskus kuvittelen tänne selkeitä tap
      Ikävä
      18
      2267
    3. Vanhalle ukon rähjälle

      Satutit mua niin paljon kun erottiin. Oletko todella niin itsekäs että kuvittelet että huolisin sut kaiken tapahtuneen
      Ikävä
      19
      1788
    4. Oletko sä luovuttanut

      Mun suhteeni
      Ikävä
      105
      1477
    5. Maisa on SALAKUVATTU huumepoliisinsa kanssa!

      https://www.seiska.fi/vain-seiskassa/ensimmainen-yhteiskuva-maisa-torpan-ja-poliisikullan-lahiorakkaus-roihuaa/1525663
      Kotimaiset julkkisjuorut
      91
      1440
    6. Hommaatko kinkkua jouluksi?

      Itse tein pakastimeen n. 3Kg:n murekkeen sienillä ja juustokuorrutuksella. Voihan se olla, että jonkun pienen, valmiin k
      Sinkut
      163
      1248
    7. Aatteleppa ite!

      Jos ei oltaisikaan nyt NATOssa, olisimme puolueettomana sivustakatsojia ja elelisimme tyytyväisenä rauhassa maassamme.
      Maailman menoa
      257
      1042
    8. Mitä sanoisit

      Ihastukselle, jos näkisitte?
      Tunteet
      63
      953
    9. Onko se ikä

      Alkanut haitata?
      Ikävä
      78
      919
    10. Omalääkäri hallituksen utopia?

      Suurissa kaupungeissa ja etelässä moinen onnistunee. Suuressa osassa Suomea on taas paljon keikkalääkäreitä. Mitenkäs ha
      Maailman menoa
      174
      903
    Aihe