module R Postgresql

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

caroline domerg
Messages : 5
Enregistré le : 20 Oct 2006, 12:23

module R Postgresql

Messagepar caroline domerg » 04 Déc 2006, 12:55

Bonjour à tous,

Ayant une grosse quantité de données à analyser qui arrive en continu, nous voulons passer par PostgreSQL pour la gestion de notre future base. J'ai donc créé la base et les tables que nous avons définies grâce à pgadmin3 (sous linux). Il me faut dans un premier temps remplir ces tables à partir de fichiers csv, pour pouvoir ensuite faire des requêtes qui me permettront de créer les jeux de données qui seront utiles pour nos analyses.

Comme je ne suis pas apte à faire tout ça en PHP et que j'ai cru comprendre que R pouvait interagir avec ce genre de systèmes de gestion de BDD, je suis à la recherche des modules appropriés.

J'ai chargé le module DBI mais il semblerait qu'il ne prenne pas en charge PostgreSQL, j'ai trouvé d'autres modules spécifiques à cet outil (pgUtils, RpgSQL et RdbiPgSQL) mais leurs dernières versions sont trop anciennes pour la version la plus récente de R.



Code : Tout sélectionner

>library(RPgSQL)
Erreur dans library(RPgSQL) : 'RPgSQL' n'est pas un package valide -- a-t-il été installé < 2.0.0 ?



Je n'en suis qu'au début et je ne suis même pas sûre que R me permette de gérer ma base de A à Z, il est aussi possible que DBI suffise et que mon système ne soit pas encore correctement installé...

Code : Tout sélectionner

p <- dbDriver("PgSQL")
Erreur dans do.call(as.character(drvName), list(...)) :
        impossible de trouver la fonction "PgSQL"



Tout ça ne m'est pas encore très familier, donc si quelqu'un pouvait m'éclairer, ça m'aiderait énormément à mettre en route ce nouveau projet.

Merci d'avance.
Caroline

Renaud Lancelot
Messages : 2484
Enregistré le : 16 Déc 2004, 08:01
Contact :

Messagepar Renaud Lancelot » 05 Déc 2006, 17:29

Bonsoir,

Je ne travaille pas avec PostgreSQL et ne peux pas vous aider spécifiquement. Si vous débutez complètement sur l'importation de données sous R, je vous conseille de lire le document "R data import/export" dans lequel PostgreSQL est cité.

En recherchant rapidement dans les packages disponibles sur le CRAN, je vois que les packages RODBC et RMySQL proposent des exemples d'interrogation de bases de données PostgreSQL.

Il pourrait être utile de chercher dans les archives de R-Help. Je crois me souvenir avoir vu passer un message à ce sujet il y a qques jours.

Merci de nous tenir au courant si vous trouvez une solution.

Renaud

Pierre Casadebaig
Messages : 67
Enregistré le : 07 Déc 2006, 12:31

Messagepar Pierre Casadebaig » 07 Déc 2006, 13:01

Bonjour,

Cette réponse n'est peut être pas très adaptée, mais un moyen d'interroger une base SQL depuis R est d'utiliser le connecteur ODBC (si j'ai compris, une sorte d'intermédiaire standardisé entre le moteur de DB et le client) du gestionnaire de DB (ex MyODBC pour MySQL).
Du côté de R, le module RODBC (facilement installable, lui) se charge de l'interrogation de la base.
Les avantages c'est que cette solution est bien portable entre différents systèmes d'exploitation, en revanche, je n'ai aucune idée de la perte de performance en passant par ODBC plutôt qu'une interrogation plus "native" de la base de donnée...

Plus concrètement, pour cette solution, il faut :
* vérifier que le pilote ODBC est fonctionnel pour le gestionnaire de DB choisi
* créer une "source de donnée" : c'est un lien au niveau système ou utilisateur vers le gestionnaire de DB accessible par tout les clients. Ca marche aussi bien sous linux, windows que OSX d'ailleurs... un exemple de configuration de ce point est accessible ici, bien que présentant le problème avec OpenOffice en tant que client.
* installer le module RODBC sous R
* définir la connection vers la source de donnée sous R :

Code : Tout sélectionner

connection <- odbcConnect()

* les requêtes sont ensuite passées de cette manière :

Code : Tout sélectionner

sqlQuery(connection, requeteSQL)


En espérant que ça vous aide un peu, bon courage !


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité