Précédent   Forum des professionnels en informatique > Bases de données > MySQL
MySQL Forum d'entraide MySQL. Avant de poster -> FAQ MySQL, Tutoriels 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 26/05/2008, 11h03   #1
Membre régulier
 
Inscription : avril 2004
Messages : 284
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 284
Points : 75
Points : 75
Par défaut Connaître l'état d'avancement d'un LOAD DATA ?

Bonjour,

Je vais effectuer un LOAD INFILE depuis un fichier, sur une table contenant plusieurs index d'unicité.

La fichier fait 1.2 milliards de lignes, je souhaite pouvoir contrôler l'état d'avancement, sachant que contrôler l'état de la table cible ne me servira à rien, puisqu'elle filtre la redondance

Sauriez-vous comment récupérer l'état du LOAD DATA ?

En vous remerciant,

C. Tobini
ctobini est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 15h34   #2
Expert Confirmé
 
Avatar de berceker united
 
Développeur informatique
Inscription : février 2005
Messages : 2 986
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2005
Messages : 2 986
Points : 3 568
Points : 3 568
Je ne pense pas que cette info puisse être vérifiable.
Je dirais qu'il y a une astuce un peut "Technique de chien malade" mais si tu connais le nombre d'enregistrement à insérer et le nombre déjà dans la table. De là, il suffirait de faire un COUNT dans la table cible à intervalle régulier. Par contre, il faut s'assurer que la table cible ne soit pas verrouillé par le LOAD DATA.
Dans le fichier source il est possible d'y placer ceci
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
BEGIN TRAN
 INSERT ...
 INSERT ...
 INSERT ...
 INSERT INTO t_nb (nb) VALUES (3);
COMMIT TRAN
 
BEGIN TRAN
 INSERT ...
 INSERT ...
 INSERT ...
 INSERT INTO t_nb (nb) VALUES (6);
COMMIT
...
De là, il faut lire la table t_nb à intervalle régulier pour savoir l'opération se trouve. En faire une soustraction du nombre total.



"Effectivement mon chère, ceci est bien une technique de "chien malade" certifiée."
__________________
Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...
berceker united est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 17h49   #3
Membre régulier
 
Inscription : avril 2004
Messages : 284
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 284
Points : 75
Points : 75
Bonjour et merci de la réponse,

J'y avais pensé, mais, comme je l'ai dit dans le premier post, la table cible contient une clé multiple unique, ce qui fait que le nombre d'entrées ne reflète pas l'avancement du fichier.

500 entrées peuvent être insérées alors qu'un million de lignes ont été lues (ou pas...)

C. Tobini
ctobini est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 19h21   #4
Expert Confirmé
 
Avatar de berceker united
 
Développeur informatique
Inscription : février 2005
Messages : 2 986
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2005
Messages : 2 986
Points : 3 568
Points : 3 568
Solution, c'est d'ajouter des marqueurs dans le fichier de script pour savoir ou le processus se trouve. ça va pas forcément avancer comme si c'était un téléchargement de fichier mais les étapes en cours seront visible.
__________________
Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...
berceker united est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2008, 09h41   #5
Membre régulier
 
Inscription : avril 2004
Messages : 284
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 284
Points : 75
Points : 75
C'est ce que j'avais fait dans une première version de script, en créant une boucle de 1 à la dernière ligne, par pas de 10 000, en stockant tout dans une table temporaire MyISAM. Du coup, toutes les 10 000 lignes insérées, j'avais une vue sur le compteur.

Vu le nombre de données, je compte plus sur un LOAD pour la vitesse théorique (20 fois celle d'un insert).

C. Tobini
ctobini est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2008, 12h39   #6
Expert Confirmé
 
Avatar de berceker united
 
Développeur informatique
Inscription : février 2005
Messages : 2 986
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2005
Messages : 2 986
Points : 3 568
Points : 3 568
Disons que le LOAD DATA est un processus à lui seul donc, connaitre son avancement n'est pas tellement compatible mais ça reste faisable quand même.
__________________
Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...
berceker united est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2008, 23h24   #7
Membre régulier
 
Inscription : avril 2004
Messages : 284
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 284
Points : 75
Points : 75
Bonjour,

Je ne comprends pas le sens de 'compatible' ?

Et si ça reste faisable, alors que faut-il faire ?

Je fais un chti hors sujet: ton avatar est terrible, il me fait sourire à chaque fois, il sort d'où ?

C. Tobini
ctobini est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2008, 11h46   #8
Expert Confirmé
 
Avatar de berceker united
 
Développeur informatique
Inscription : février 2005
Messages : 2 986
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2005
Messages : 2 986
Points : 3 568
Points : 3 568
Je veux dire que le processus du LOAD_DATA doit pas permettre de piocher l'information de l'état d'avancement. Par contre, via une ruse un pas forcément juste c'est peut être possible. En prenant par exemple la taille du fichier source est soustraire à la taille de la base de données entière. Mais l'information ne sera pas juste.
__________________
Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...
berceker united est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2008, 12h19   #9
Expert Confirmé
 
Avatar de berceker united
 
Développeur informatique
Inscription : février 2005
Messages : 2 986
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2005
Messages : 2 986
Points : 3 568
Points : 3 568
Cadeau


J'utilise cette image pour dire : "Certifié code de chien malade" C'est à dire un vieux code tout merdique
__________________
Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...
berceker united est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2008, 15h50   #10
Membre régulier
 
Inscription : avril 2004
Messages : 284
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 284
Points : 75
Points : 75
Enorme le toutou, il a une tête magique

Merci pour tout et à + !

C. Tobini
ctobini 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 20h31.


 
 
 
 
Partenaires

Hébergement Web