2009-09-30 1 views
0

Hay, я создал паука для сканирования по PDF-документу и записи каждого слова в документе в таблицу в базе данных MySQL.Сделать таблицу MySQL уникальной

Очевидно, что слова, подобные «',' и ',' или 'и т. Д., Появляются в книге много раз.

Мне просто интересно, какой самый быстрый способ удалить значения обмана из таблицы?

ответ

3

Создать таблицу без индексации слов и введите все слова из книги, используя массовые вставки (вы также можете использовать LOAD DATA). Когда вы закончите с вставками, добавить новый индекс на word поле

Затем создайте вторую таблицу с помощью:

CREATE TABLE newTable SELECT DISTINCT word FROM oldTable 
0
delete from words where idcolumn not in 
    (select min(idcolumn) 
    from words T2 
    where T2.plain = WordsTable.plain) 

Это работает, если вы добавили (idcolumn, plain) за каждое найденное слово.

Если у вас нет столбца id (pk), вы можете использовать решение Anax.

В дополнение к тому, чтобы не вставлять дубликаты (комментарий codeburger), вы можете просто установить уникальный индекс в своем обычном столбце.

+0

таблица слов называется «слова» и поле, содержащее слово является «простым» – dotty

0

выбрать в поле слова, а затем удалить все строки с другим идентификатором? Я не мастер в подзапросах, поэтому нет примера atm :)

1

Вместо того, чтобы удалять дубликаты, вы можете убедиться, что никакие дубликаты никогда не попадут в таблицу.

Предположив ваша таблица имеет только 2 поля, идентификатор и слово:

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

Это вставить слово в таблицу, только если это не уже там

1

Если вы можете повторно запустить скрипт для заполнения базы данных, вы можете добавить уникальный ключ в поле «слово», а вместо INSERT INTO делать ЗАМЕНА В. Это приведет к удалению предыдущего экземпляра записи перед добавлением дублирующего поля. Это не самый эффективный способ сделать это, но это довольно просто. Смотрите здесь для более подробной информации:

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

Смежные вопросы