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

Administration MySQL Discussion :

Update de tables par fichier csv


Sujet :

Administration MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2008
    Messages
    240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2008
    Messages : 240
    Par défaut 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
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    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, en retraite... mais toujours Autoentrepreneur à l'occasion.
    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 !

Discussions similaires

  1. [AC-2002] Updater une table par rapport à une autre
    Par thierryakaguy dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 29/07/2009, 17h48
  2. creation de table avec fichier csv
    Par pseudobidon57 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 28/09/2007, 14h05
  3. Réponses: 9
    Dernier message: 12/06/2007, 11h02
  4. Update de plusieurs tables, import fichier csv sql loader
    Par fusuke dans le forum SQL*Loader
    Réponses: 2
    Dernier message: 18/05/2006, 15h08
  5. exporter des table en fichier csv
    Par kornmuse90 dans le forum Administration
    Réponses: 1
    Dernier message: 17/03/2006, 09h17

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