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

Ruby Discussion :

Exportation de données avec Ruby


Sujet :

Ruby

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2015
    Messages : 7
    Points : 1
    Points
    1
    Par défaut Exportation de données avec Ruby
    Bonjour,
    est ce qu'il y'a un moyen d'exporter toutes mes tables de ma base de données Mysql dans un fichier csv ou excel avec Ruby.
    Merci d'avance

  2. #2
    Membre actif
    Profil pro
    Problem Solver
    Inscrit en
    Juin 2013
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Problem Solver

    Informations forums :
    Inscription : Juin 2013
    Messages : 138
    Points : 231
    Points
    231
    Par défaut
    Toutes tes tables dans un seul fichier CSV ?
    Mais elles n'ont pas les mêmes colonnes, donc je dirais non.
    En plus comment veux-tu afficher les associations (ex : user_id ou une colonne "user name") ?

    20 tables dans 20 CSV, pourquoi pas.
    20 tables dans 1 XLS de 20 onglets, pourquoi pas.
    À toi de voir si tu veux 20 exports ou 1 export.

    À toi de voir si tu veux faire ça à partir d'un outil SQL direct (mysqldump, pgdump),
    ou dans un outil Ruby/Rails classique : vidéo et code ici
    https://gorails.com/episodes/export-to-csv

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2015
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    20 tables dans 20 fichiers csv ça me va mais j'utilise pas rails moi. Je veux juste un script simple en ruby executé même en ligne de commande.
    je voulais passer par une seule requête " SELECT id, filename INTO OUTFILE '/home/results.csv' FROM attachments"
    mais je suis bloqué avec ce message d'erreur" Can't create/write to file '/path/file.csv' (Errcode: 13 “Permission denied”)"
    alors que j'ai modifié tous les droits d'accés

  4. #4
    Membre averti Avatar de Javix
    Inscrit en
    Juin 2007
    Messages
    531
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 531
    Points : 353
    Points
    353
    Par défaut
    N'importe quel client DB pourrait le faire, pas besoin de passer par un script Ruby, tu vas passer plus de temps pour configurer tes modèles, surtout si le schéma ne suit pas les conventions de nommage RoR. EN général un simple clique soit sur une table soit le schema et le tour est joué.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2015
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Oui c'est vrai mais quand il s'agit de 1000 et quelques tables je pense que c'est mieux de faire un script (une fonction) qui prend en paramètre le nom de la table et sort le resultat.
    c'est mon idée je sais pas ce que t'en pense?

  6. #6
    Membre averti Avatar de Javix
    Inscrit en
    Juin 2007
    Messages
    531
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 531
    Points : 353
    Points
    353
    Par défaut
    Je te laissse juste de comparer cette commande:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mysqldump -u user -p database_name table_1 table_2 table_3 > filename.sql
    où table_1, table_2, table_3 sont les noms des tables à exporter, filename.sql - fichier cible d'exportation.

    Si tu veux les exporter vers un fichier CSV, tu peux t'inspirer de la doc de mysqldump, permettant de préciser type de séparateur et d'autres options.

    Pour ces choses-là, une command pure SQL sera toujours beaucoup plus rapide que n'importe quel ORM.

    Perso, j'utilise Ruby uniquement quand il s'agit de mapper des données vers des modèles différents, surtout lorsque un legacy DB ne suit pas les conventions RoR.

    Imagine, pour 1000 tables tu seras obligé de créer 1000 modèles !!!! Sinon, comment envisages-tu de mapper tes données ?
    Et puis, même après avoir les données de toutes tes tables en CSV - ce n'est pas pour n'en rien faire après, non, je suppose ? Dons tu devrais de tout façon parser tous ces CSV et seras obligé d'avoir autant de modèles AR ou juste classes Ruby, ça dépend de la tache finale ...

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2015
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    j'utilise pas le modèle MVC. Je pense que un simple script (programme) ruby avec une fonction d'exportation fera l'affaire.
    j'envissage même de l'exécuter en ligne de commande './nom_programme.rb'

  8. #8
    Membre averti Avatar de Javix
    Inscrit en
    Juin 2007
    Messages
    531
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 531
    Points : 353
    Points
    353
    Par défaut
    C n'a rien à voir avec MVC, bien sur.
    Pour te connecter à une DB, tu as besoin d'utiliser un ActiveRecord adapter (si tu utilises ActiveRecord comme ORM), ou un autre, ROM, par exemple, mais le principe reste le même.
    Pour cela il faudra définir les paramètres de connexion à la DB (nom, host, port, user name, password, etc.).
    Pour pouvoir lire les données d'une table, il faut indiquer à ton adapter quelle table correspond à quel modèle (class) dans ton code Ruby. Si tu ne l'indiques pas, ActiveRecord va utiliser ses conventions de nommage: class Person -> tables People, class User -> table Users, etc. Mais on peux les surcharger (override).

    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    require 'active_record'
    require 'mysql2'
     
    ActiveRecord::Base.establish_connection(
      adapter:  'mysql2',
      encoding: 'utf8',
      database: 'p15t01',
      pool: 5,
      host:     'some.weird.host.francetelecom.fr',
      username: 'some_user_name',
      password: 'changeme'
    )
     
    class Commune < ActiveRecord::Base
      self.table_name = 'VILLAGES' # juste pour te montrer comment on peut surcharger le nom utilisé par convention
    end
     
    puts "records found: #{Commune.count}"
    Il n'y aucun problème de sauvegarder ce code dans un ficher toto.rb et l'exécuter depuis ton terminal (Windows console) comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ruby path/to/toto.rb
    et il sera exécuté.

    Pour ce qui est lecture CSV, tu peux regarder un exemple ici.

Discussions similaires

  1. Exporter des données avec numéroauto
    Par clement2009 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 13/06/2011, 14h51
  2. [AC-2003] Export des donnés avec images vers page web
    Par chernirachid dans le forum IHM
    Réponses: 3
    Dernier message: 26/10/2009, 11h31
  3. Export de données avec JPA/Hibernate
    Par yashiro dans le forum JPA
    Réponses: 1
    Dernier message: 15/10/2009, 12h26
  4. Exportation des données avec Insert
    Par AdHoc dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 23/07/2007, 11h35
  5. Exporter des données avec les insert
    Par maximenet dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 03/04/2006, 16h20

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