Non sei loggato | Register | Login

Fare il trim di tutti i campi di una tabella sql Aggiungi

News / Codice

Ho dovuto sbatterci un po' la testa ed il risultato è il seguente:

  1. CREATE PROCEDURE pulisciTabella(IN db_name VARCHAR(255), IN tab_name VARCHAR(255
  2. ))
  3. BEGIN
  4.     DECLARE done INT DEFAULT 0;
  5.     DECLARE colonna VARCHAR(255);
  6.     DECLARE colonne CURSOR FOR SELECT COLUMN_NAME FROM
  7.      INFORMATION_SCHEMA.COLUMNS WHERE table_name = tab_name AND table_schema =
  8.       db_name;
  9.     DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
  10.     OPEN colonne;
  11.     REPEAT
  12.         FETCH colonne INTO colonna;
  13.         IF NOT done THEN
  14.             SET @A = colonna;
  15.             SET @B = tab_name;
  16.             SET @C = CONCAT("UPDATE ",@B," SET ",@A,"=","trim(",@A,")");
  17.             PREPARE pulisci FROM @C;
  18.             EXECUTE pulisci;
  19.             DEALLOCATE PREPARE pulisci;
  20.         END IF;
  21.     UNTIL done END REPEAT;
  22.     CLOSE colonne;
  23. END;

I dati vengono importati da un gestionale che "riempie di spazi" i campi fino a raggiungere la loro massima dimensione (non chiedetemi il motivo...non l'ho fatto io): ecco il perchè di questa procedura che fa il trim di tutti i campi di una tabella.
Purtroppo richiede abbastanza tempo per essere eseguita (circa 2 milioni di campi) quindi se qualcuno conosce un'alternativa più veloce, ben venga!

Daniele Simonin 24 November 2008 alle 11:10 Trackback URI

Scrivi un commento

Tags di formattazione:








Leggi i 3 commenti

Posso invece chiedertelo il motivo? :P

Commento di Luca 24 November 2008 alle 12:13

infatti concordo con luca! per quale oscura ragione devi riempire milioni di campi con degli spazi???

Commento di maynard 24 November 2008 alle 13:29

Il motivo è che il gestionale esporta/salva i dati in questo modo, riempiendo di spazi fino a raggiungere la lunghezza massima del campo.
Naturalmente, una volta che io prendo questi dati e li importo nel mio db mysql...devo farci il trim per facilitarmi la vita :)

Commento di Daniele Simonin 24 November 2008 alle 14:07

Feed

infoPillole (by Wikipedia)

Ultimi commenti

Calendario

March 2010
M T W T F S S
« Feb    
1234567
891011121314
15161718192021
22232425262728
293031  

Archivio

Categorie

News casuali

Ultimi tutorials

Progetti

Alcuni miei lettori

Have a break