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

Administration MySQL Discussion :

Update de tables par fichier csv


Sujet :

Administration MySQL

  1. #1
    Membre du Club
    Update de tables par fichier csv
    Bonjour à tous,

    Je suis confronté à un problème de volume de données à importer dans différentes tables.

    Je prends le cas extrême d'un des fichiers contenant 667654 lignes et qui ne peut que grandir. Il contient une liste de factures émises depuis le 01/01/2018 et je le recréé tout les jours. Actuellement pour l'import j'utilise cette commandes :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    mysqlimport --compress --fields-enclosed-by='' --lines-terminated-by='\n' --fields-terminated-by='|' --host=mysql.db --user=user --password=pass --local --delete database www/plugins/portail/csv/${TABLE}.csv


    Mon idée est d'avoir moins de volumes de données à traiter. Dans un premier temps lors de l'export vers le csv j'exporterais uniquement les nouvelles factures créées depuis le dernier export, du coups le fichier sera réduit à quelques lignes. Ensuite côté mysql je veux mettre à jour ma table et non l'importer dans la totalité. Mon problème est que je ne trouve pas comment en ligne de commande mettre à jour les données et non faire un import total comme actuellement. J'insiste sur le "en ligne de commande" car je communique avec le serveur mysql au travers de ssh (hébergement mutualisé ovh).

    Est-ce que vous auriez une idée ?

    Merci d'avance.

  2. #2
    Modérateur

    Bonjour,

    Dans un premier temps lors de l'export vers le csv j'exporterais uniquement les nouvelles factures créées depuis le dernier export
    1) Il va falloir stocker quelque part la date de ce dernier export. Ça peut être une table qui historise les exports.

    2) Il faut bien sûr enregistrer la date de la facture mais ça me semble évident que c'est déjà le cas, non ?

    3) Est-il possible que des factures soient modifiées et doivent donc être réexportées ?

    4) Vous pouvez utiliser une requête de type SELECT INTO OUTFILE et mettre cette requête dans un fichier SQL que vous pouvez exécuter via la commande mysql :
    Code bash :Sélectionner tout -Visualiser dans une fenêtre à part
    mysql -u mon_user_mysql_qui_a_les_droits_sur_la table -p[password] [la_bdd] > [chemin_vers_le_fichier.sql]
    (syntaxe approximative)

    5) Une fois que vous avez trouvé la bonne syntaxe pour faire ça et que ça fonctionne en direct, vous pouvez créer un exécutable qui va lancer la commande mysql.

    Ensuite côté mysql je veux mettre à jour ma table et non l'importer dans la totalité.
    Là j'ai du mal à comprendre ! Vous voulez exporter votre table des factures ou bien importer des données externes dans cette table ?

    J'insiste sur le "en ligne de commande" car je communique avec le serveur mysql au travers de ssh (hébergement mutualisé ovh).
    Normalement, vous devez avoir un phpMyAdmin, aussi, non ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !