IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Script avec gestion d'erreur pour loader des data depuis un csv


Sujet :

Requêtes MySQL

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 577
    Points : 256
    Points
    256
    Par défaut Script avec gestion d'erreur pour loader des data depuis un csv
    Bonjour,

    j'ai un serveur qui génère des data dans un fichier csv.
    J'arrive à charger ces data depuis un autre serveur dans une base mysql à l'aide d'un LOAD DATA LOCAL INFILE ou mysqlimport --local ...

    Les nouvelles data doivent écraser en totalité à chaque reload celles se trouvant dans la base.

    Donc j'ai fait un script loader.sql en 2 étapes :
    1/ TRUNCATE TABLE ma_table
    2/ LOAD DATA LOCAL INFILE '\\\\mon_serveur\\le_fichier.csv" INTO TABLE ma_table ....

    Cela marche bien SAUF si le LOAD DATA INFILE échoue (pb d'accès machine, pb réseau ...), et donc là je me retrouve avec une base vide, puisque le truncate l'a vidée.

    Quelle solution pourriez-vous me préconiser ?

    @+

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 016
    Points : 23 705
    Points
    23 705
    Par défaut
    Bonjour,

    Pourquoi, dans ce cas précis, ne pas utiliser le moteur CSV de MySQL ?
    Ca peut être une solution... L'écrasement du fichier écrase les données et les remplace automatiquement. Tu n'as plus qu'à gérer la copie du fichier, et plus le chargement des données.

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 577
    Points : 256
    Points
    256
    Par défaut
    Salut,
    parce que je n'ai pas la main sur le 1er serveur.
    Je ne peux me contenter que d'une seule chose : accéder à un fichier csv (généré par je ne sais pas quoi).

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 577
    Points : 256
    Points
    256
    Par défaut
    aprés réflexion, peut être faire un batch de copie du fichier csv vers le "bon path ?" mysql de sorte qu'il puisse charger les data par la suite ?

  5. #5
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 016
    Points : 23 705
    Points
    23 705
    Par défaut
    Copier et renommer le fichier correctement vers le bon répertoire du serveur, oui .

    C'est à tester, je n'ai jamais vraiment essayé cette solution...

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 577
    Points : 256
    Points
    256
    Par défaut
    OK,
    mais d'aprés ce que je viens de voir sur l'ENGINE=CSV, c'est que le séparateur du fichier est obligatoirement la virgule.
    Pour mon cas, il s'agit du point-virgule (en fait, tout sauf la virgule)

    Ce qui est trés embétant ...
    C'est bien domage car la solution est séduisante

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 577
    Points : 256
    Points
    256
    Par défaut
    Y a-t-il une possibilité que je n'aurai pas vue de spécifier le séparateur de fichier ?
    ou sinon d'autres idées pour mon cas ?

  8. #8
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 016
    Points : 23 705
    Points
    23 705
    Par défaut
    Citation Envoyé par olive_le_malin Voir le message
    OK,
    mais d'aprés ce que je viens de voir sur l'ENGINE=CSV, c'est que le séparateur du fichier est obligatoirement la virgule.
    Pour mon cas, il s'agit du point-virgule (en fait, tout sauf la virgule)
    Effectivement, on est sur de "pur" CSV (comma separated value).
    Dommage, voilà une piste intéressante qui fait chou blanc.

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 577
    Points : 256
    Points
    256
    Par défaut
    mouais ...
    bon sinon, est-ce que à partir d'un script .sql "simple" je peux arriver à ça ?
    en gros il faudrait que je fasse des tests sur le load data, mais je ne sais pas comment faire ça ?

  10. #10
    Membre éprouvé
    Avatar de Sivrît
    Profil pro
    Inscrit en
    Février 2006
    Messages
    953
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Points : 1 249
    Points
    1 249
    Par défaut
    Peut-être avec un script shell utilisant l'option "-e" :
    -e, --execute=name Execute command and quit. (Disables --force and history file)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mysql -uXXX -rXXX -e "LOAD DATA [...]" ma_bdd
    En cas de problème, "mysql' devrait renvoyer un code d'erreur. Pour peu que les données soit chargées dans une autre table, le script peut ensuite soit alimenter la table finale (pourquoi pas en une transaction), soit nettoyer en cas de problème.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Scripts avec gestion des sorties IP1 ou IP2
    Par kesaco dans le forum Langage
    Réponses: 1
    Dernier message: 20/04/2014, 14h10
  2. Gestion d'erreur pour fichier introuvable
    Par Baldor dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 28/05/2008, 13h31
  3. [VBA Excel Messagerie] Envoi Mail avec gestion d'erreurs pour tracer.
    Par botakelymg dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/05/2008, 10h21
  4. [MySQL] Erreur pour modifier des champs
    Par kevinf dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 12/11/2006, 21h47
  5. Réponses: 2
    Dernier message: 29/08/2006, 13h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo