Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Administration
Administration Forum d'entraide sur l'administration de MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/05/2008, 09h14   #1
Invité régulier
 
Inscription : mars 2007
Messages : 25
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 25
Points : 6
Points : 6
Par défaut Detection/Update des caracteres speciaux

Bonjour,

Je vous expose, je travaille sur une base qui commence a etre consquente (plus d'un millions de donnees) et il y a un probleme d'accent. Des donnees de la base vont passer sur un autre support et le jeu de caractere utilise est restreint, hors dans ma table on trouve des caracteres ne rentrant pas ds le jeu (au hasard quelques chose comme ca : Ê ou ca : Â et bien d'autre encore...)

Mon objectif est de parcourir ma table a la recherche des caracteres speciaux et de les remplacer par leur equivalent que j'aurai defini (Ê -> E ou  -> A par exemple)

J'ai commencer par vouloir rechercher mes caracteres avec des requetes mysql en utilisant le LIKE (genre SELECT * FROM table WHERE NOM LIKE "%Â%") mais cela me remvoyait aussi bien des mot avec le caractere special que sans (genre je recevais a la fois ÂLBERT que GANDALF). J'ai donc fini par abandonne le LIKE et me suis tourne vers PHP
J'ai pour cela ecrit un script qui pour chaque table, pour chaque olone contenant des CHAR (ou VARCHAR) alors pour chaque row je regarde si il y a un caractere special (suivant leur code iso) et si oui je genere une requete UPDATE. Et ca ca marche tres bien mais c'est tres tres long (+ de 25 heures estimes).

Je fini donc par me reretourner vers une methode MySQL en me disabt que j'ai peut etre zappe kke chose (genre les collations...)
Donc si vous connaisser un moyen quelque pour resoudre mon probleme je vous en serais reconnaissant.

Au passage savez vous si sur une base MySQL il est plus interressant de faire une requete renvoyer un million de rows (sans LIMIT) ou de faire 100 milles requete renvoyant une centaine de row (avec LIMIT).

Merci d'avance en tout cas

(ps:j'espere que c'est le bon forum)
rastalien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/05/2008, 13h33   #2
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 959
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 959
Points : 17 792
Points : 17 792
Il faut que vous jouiez sur les collations. Mais je ne pense pas que MySQL donc le niveau de SQL est assez faible sache faire cela.

Un petit exemple :
Code :
1
2
3
SELECT * 
FROM TABLE 
WHERE NOM LIKE '%Â%' COLLATE French_CS_AS --> ce qui signifie collations
sensible à la casse et aux accents.
Lisez l'articke que j'ai écrit à ce sujet : http://sqlpro.developpez.com/cours/s...er/collations/

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h46.


 
 
 
 
Partenaires

Hébergement Web