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

PHP & Base de données Discussion :

Copier des lignes d'une table d'une base de données à une autre


Sujet :

PHP & Base de données

  1. #1
    Membre habitué
    Inscrit en
    Juillet 2006
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 747
    Points : 185
    Points
    185
    Par défaut Copier des lignes d'une table d'une base de données à une autre
    Bonjour à tous,

    Mon besoin est assez simple à décrire, moins simple à réaliser.

    Je voudrais faire un select (avec jointure) sur les données de 2 tables et copier le résultat de cette requête dans une table qui se trouve dans une autre base de données.

    Est-ce que ceci est possible et quelqu'un saurait-il comment faire ?

    Je précise que cette action sera exécutée via cron tous les jours à minuit

    Merci beaucoup les amis !!

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 234
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 234
    Points : 15 531
    Points
    15 531
    Par défaut
    est ce que ces 2 tables ont la même structure ?
    quel est le lien entre ces 2 tables ?

  3. #3
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 091
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 091
    Points : 8 194
    Points
    8 194
    Billets dans le blog
    17
    Par défaut
    Est-ce que ceci est possible et quelqu'un saurait-il comment faire ?
    Oui, il suffit de préfixer les tables avec le nom des bases de données, ex. avec MySQL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    INSERT INTO db2.target_table (col1, col2, col3)
    SELECT ALL t1.col1, t1.col2, t2.col3
    FROM db1.table1 AS t1
    INNER JOIN db1.table2 AS t2 ON t1.id = t2.ref_id
    WHERE DATE(t1.created_at) >= DATE(NOW() - INTERVAL 1 DAY);
    Je précise que cette action sera exécutée via cron tous les jours à minuit
    Pour l'exécuter tous les minuits, toujours avec MySQL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE EVENT midnight_update
    ON SCHEDULE EVERY 24 HOUR STARTS '2022-12-08 00:00:00'
    DO
        INSERT INTO ...
    ;
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  4. #4
    Membre habitué
    Inscrit en
    Juillet 2006
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 747
    Points : 185
    Points
    185
    Par défaut
    Merci beaucoup pour vos retours Mathieu et Seb.

    @Mathieu : La demande du client n'est pas encore très claire mais j'imagine qu'il serait mieux d'anticiper le cas le plus complexe et imaginer que les tables n'ont pas forcément la même structure.

    En fait, je dispose de données dans ma base (une centaine de table). Ce client voudrait un accès exclusif en lecture aux uniques données le concernant. C'est pourquoi je voudrais lui créer un nouvel accès vers une nouvelle DB (qui devrait être au final composée de 2 ou 3 tables).

    @Seb :Merci pour ton retour diablement efficace. J'ai oublié de préciser que je travaille avec PostgreSQL. N'y aurait-il pas moyen pour le script de le lancer via une ligne de commande (sur ubuntu). Je peux exécuter un script PHP via cron par exemple.

    Merci !!

  5. #5
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 091
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 091
    Points : 8 194
    Points
    8 194
    Billets dans le blog
    17
    Par défaut
    Plutôt que de copier la data tu pourrais peut-être créer une vue.

    Et oui, tu peux éventuellement planifier des opérations avec cron.

    Sous Linux pour lancer l'éditeur :

    $ crontab -e
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  6. #6
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Il veut pouvoir accéder à un phpmyadmin par exemple ?
    Si tu es root, tu peux procéder ainsi :
    Tu fais une vue avec tout ce qui le concerne, que tu appelles v_monclient, puis tu crées un compte user_monclient dans phpmyadmin avec des droits restreints. Tu "grant" les droits de lecture seule sur la vue en SQL; C'est très facile;

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    GRANT SELECT ON VIEW v_monclient TO user_monclient;

    Quand il se connectera avec le login et mdp que tu lui auras fourni, il ne verra que sa vue.
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  7. #7
    Membre habitué
    Inscrit en
    Juillet 2006
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 747
    Points : 185
    Points
    185
    Par défaut
    Oui, il va utiliser un outil qui s'appelle metabase.

    Merci pour les conseils. J'en prends bonne note !

Discussions similaires

  1. Réponses: 1
    Dernier message: 31/12/2015, 17h05
  2. [Toutes versions] Vba: Copier des lignes sur une autre feuille
    Par yassxavi dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/02/2015, 11h48
  3. Copier des lignes dans une autre feuille sous condition
    Par Maya06 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 24/05/2014, 20h57
  4. [XL-2003] Copier des lignes dans une autre feuille à la première ligne vide
    Par PasDan dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/09/2010, 13h34
  5. Excel-copier des lignes sur une autre feuille
    Par petecul dans le forum Excel
    Réponses: 7
    Dernier message: 13/09/2007, 02h56

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