wtorek, 25 września 2012

Usuwanie "brzydkich" znaczków z tabeli i duplikatów


W tym poście chciałam opisać coź z czym ostatnio miałam do czynienia w pracy, mianowicie usuwanie "brzydkich" znaków ze słów w tabeli, które kiedyś "wkradły się" do niej poprzez złe kodowanie w aplikacji.
Na wszelki wypadek zrobiłam kopie tej tabeli, a następnie mając listę znaków do zamiany, wykonałam następujące polecenia:
UPDATE slowa_clean SET slowo = REPLACE(slowo,'?','ż');
UPDATE slowa_clean SET slowo = REPLACE(slowo,'e','ę');
UPDATE slowa_clean SET slowo = REPLACE(slowo,'±','ą');
UPDATE slowa_clean SET slowo = REPLACE(slowo,'3','ł');
UPDATE slowa_clean SET slowo = REPLACE(slowo,'n','ń');
UPDATE slowa_clean SET slowo = REPLACE(slowo,'¶','ś');
UPDATE slowa_clean SET slowo = REPLACE(slowo,'a','ć');
UPDATE slowa_clean SET slowo = REPLACE(slowo,'1','ź');
UPDATE slowa_clean SET slowo = REPLACE(slowo,'—','Ż');
UPDATE slowa_clean SET slowo = REPLACE(slowo,'E','Ę');
UPDATE slowa_clean SET slowo = REPLACE(slowo,'!','Ą');
UPDATE slowa_clean SET slowo = REPLACE(slowo,'L','Ł');
UPDATE slowa_clean SET slowo = REPLACE(slowo,'N','Ń');
UPDATE slowa_clean SET slowo = REPLACE(slowo,'¦','Ś');
UPDATE slowa_clean SET slowo = REPLACE(slowo,'A','Ć');

Z uwagi na to, że w mojej tabelce pojawiło się kilka zdublowanych słów (niektóre dobre dodały się już w obecnym dobrym kodowaniu), należało pozbyć się zduplikowanych wierszy, aby to zrobić stworzyłam nową tabelę i wykonałam następujące polecenie:
INSERT INTO slowa_clean2 SELECT * FROM slowa_clean GROUP BY slowo;
Na końcu podmieniłam nową tabelkę ze zmianami, a starą zachowałam pod inną nazwą (na wszelki wypadek ;) ). Natomiast tabelkę roboczą slowa_clean usunęłam.

RENAME TABLE slowa TO slowa_old;
RENAME TABLE slowa_clean2 TO slowa;

Oczywiście najlepiej pilnować, aby w ogóle nie musieć tego robić, czyli dbać o prawidłowe wprowadzanie danych do bazy :P

Brak komentarzy:

Prześlij komentarz