MySQL tablo benzersiz olun

5 Cevap php

Hay, ben bir PDF belgesi üzerinden tarama ve bir MySQL veritabanında bir tabloya belgedeki her kelimeyi giriş yapmak için bir örümcek yarattı.

Açıkçası '', 've', 'veya' vb gibi kelimeler bir kitapta pek çok kez görünür.

Ben sadece bir tablodan dupe değerlerini kaldırmak için en hızlı yöntem nedir merak ediyorum?

5 Cevap

Kelimeleri dizin olmadan bir tablo oluşturun ve kitle ekler kullanarak kitap (ayrıca LOAD DATA kullanabilirsiniz) tüm kelimeleri koymak. Eklemeleri ile bittiğinde, word alanında yeni Endeksi eklemek

Sonra kullanarak ikinci bir tablo oluşturun:

CREATE TABLE newTable SELECT DISTINCT word FROM oldTable

Yerine çiftleri kaldırarak, sen hiçbir çiftleri hiç tabloya bunu yapmak emin olabilir.

Masanızı varsayarsak sadece 2 alanları, id ve kelime var:

INSERT INTO table SELECT null, 'word' FROM table WHERE NOT EXISTS (SELECT * FROM table WHERE word = 'word') LIMIT 1;

Orada zaten yok sadece bu tabloya kelimeyi eklemek olacaktır

Eğer veritabanı doldurmak için komut dosyasını yeniden çalıştırın varsa, bir DEĞİŞTİR INTO yapmak "kelime" alanında benzersiz bir anahtar eklemek yerine INSERT INTO olabilir. Bu yinelenen bir alan eklemeden önce kaydın önceki örneğini silmek olacaktır. Bu bunu yapmak için en etkili yol olmayabilir, ama oldukça basit. Daha fazla bilgi için buraya bakınız:

http://dev.mysql.com/doc/refman/5.0/en/replace.html

sözcük alanında farklı seçin ve ardından farklı bir kimliğe sahip tüm satırları silmek? Ben hiçbir örnek atm sorgular bir usta değilim :)

delete from words where idcolumn not in
  (select min(idcolumn) 
   from words T2 
   where T2.plain = WordsTable.plain)

Eğer (idcolumn, plain) Bulduğunuz her kelime için eklenen bu çalışır.

Eğer bir id sütunu (pk) yoksa, o zaman ANAX çözümünü kullanabilirsiniz.

Çiftleri (codeburger comment) ekleme ek olarak değil, sadece düz sütun üzerinde benzersiz bir dizin belirleyebilirsiniz.