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

R Discussion :

import données excel sous postgresql


Sujet :

R

  1. #1
    Candidat au Club
    Homme Profil pro
    etudiant
    Inscrit en
    Mai 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : etudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 4
    Points : 3
    Points
    3
    Par défaut import données excel sous postgresql
    J’ai une procédure pour l’import de données d’Excel vers postgresql, elle marche bien.
    Reste seulement à importer les commentaires sur les colonnes qui correspondent aux champs de la base de donnes (les colonnes).
    La procédure en question est :
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    install.packages("RPostgreSQL")
    install.packages("gdata")
    install.packages("DBI")
    library(RPostgreSQL)
    library(gdata)
    library(DBI)
     
    drv <- dbDriver("PostgreSQL")
    con <- dbConnect(drv, host="postgres", user="postgres", password = "postgres", dbname="db_name")
    setwd('/home/donnees/')
     
     
     
    Integre_Fichier_excel<-function(schema_destination,fichierexcel,nom_table_a_creer,sheetdata,skipdata,sheetcomment,skipcomment)
    {
     
    ## fonctions importe les donnees excel dans Rdata
    importxls<-function(xls,sheet,skip,dec)
    {
    mycsv<-xls2csv(xls,sheet=sheet,verbose=TRUE, dec = ".")
    read.csv(summary(mycsv)$description,quote = "\"",dec =dec,skip=skipdata)
    }
    RdataCvs<-importxls(fichierexcel,sheetdata,skip=skipdata,dec=".")
     
     
    #on mets les champs en minuscule pour virer les quotes des fields
    names(RdataCvs)<-tolower(names(RdataCvs))
     
    # on force le schema de destination
    V1=paste('set search_path to ',schema_destination,';');
    dbGetQuery(con,V1)
     
    # si table existe on supprime
    V1=paste('drop table if exists ',schema_destination,'.',nom_table_a_creer,';',sep="");
    dbGetQuery(con, V1)
     
    #ecriture de la table
    V1=paste(nom_table_a_creer,sep="");
    dbWriteTable(con,V1,RdataCvs,row.names=FALSE)
     
    # on remet le schema d'origine
    V1=paste('set search_path to ',schema_origine,';');
    dbGetQuery(con,V1)
     
    #on force les droits
    V1=paste('ALTER TABLE  ',schema_destination,'.',nom_table_a_creer,' OWNER TO droit_autre ;',sep="");
    dbGetQuery(con, V1)
     
    }
     
    # Importe un fichier excel dans postgres
    # parametre entrée
    # schema_destination : nom du schema de destination
    # fichierexcel : Nom du ficier Excel
    # nom_table_a_creer : Nom de la table a créer dans le schema de destination
    # sheetdata : Numero de la feuille qui contient les données
    # skipdata  : Saut de ligne des données en debut de fichier excel
    # sheetcomment : Numero de la feuille qui contient les commentaires
    # skipcomment  : Saut de ligne des commentaires en debut de fichier excel
    Appel de la fonction pour le fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Integre_Fichier_excel(schema_destination='mon_schema',fichierexcel='mon_fichier.xls',nom_table_a_creer='nom_ma_table',sheetdata=1,skipdata=0,sheetcomment=3,skipcomment=5);
    Pour les commentaires :
    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
    #commentaires 
    # on lit le fichier excel et on mets la requete comment dans V1 
    mycsv<-xls2csv(fichierexcel, sheet=sheetcomment,verbose=TRUE, dec = ".")
    tableaubrut<-read.csv(summary(mycsv)$description,fileEncoding="LATIN1",skip=skipcomment,sep=",")
    V1=paste('COMMENT ON COLUMN ',schema_destination,'.',nom_table_a_creer,'.',tableaubrut[,1],' is ' , '\'',tableaubrut[,3],sep="");
     
    # enleve les caracteres speciaux 
    V1=gsub ("d'","d ",V1)
    V1=gsub ("l'","l'' ",V1)
    V1=gsub ("é","e",V1)
    V1=gsub ("Ã*","a",V1)
    #on remets le ' de la fin de chaine (gsub aavant !!)
    V1=paste(V1,'\';','\n');
     
    # mets le bloc en un seul element 
    dbGetQuery(con,paste(V1,collapse=''))

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 011
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 011
    Points : 23 692
    Points
    23 692
    Par défaut
    Bonjour,

    Et qu'est-ce qui pose problème exactement ?
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  3. #3
    Candidat au Club
    Homme Profil pro
    etudiant
    Inscrit en
    Mai 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : etudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    la partie commentaire:
    la requête ne prend pas.
    tout le bloc commentaire ne passe pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dbGetQuery(con,paste(V1,collapse='')) 
    erreur

  4. #4
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 011
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 011
    Points : 23 692
    Points
    23 692
    Par défaut
    Quel est le message d'erreur renvoyé ?
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 34
    Points : 44
    Points
    44
    Par défaut
    pour envoyer des requêtes SQL avec des valeurs précises, moi j'utilise

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sql="INSERT INTO ma_table VALUES (:prenom, :nom, :nationalite)"
    dbGetQuery(con,sql,d)
    ou d est un data.frame à trois colonnes contenant le prenom, nom et nationalite, les noms des colonnes sont prenom, nom et nationalite.

    Le data.frame est nécessaire pour des valeurs prises par des variables.

    Je sais pas si cela peut t'aider.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sql="drop table ma_table"
    dbGetQuery(con,sql)
    cela supprime parfaitement une table chez moi

    Cordialement Max

  6. #6
    Candidat au Club
    Homme Profil pro
    etudiant
    Inscrit en
    Mai 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : etudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 4
    Points : 3
    Points
    3
    Par défaut import donnees sous excel
    salut

    c'est bon j'ai résolu mon problème

  7. #7
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 011
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 011
    Points : 23 692
    Points
    23 692
    Par défaut
    Et ?
    Quel était le problème et la solution que vous avez trouvée ?
    Des fois que d'autres personnes rencontrent le même problème, ça pourrait les aiguiller
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  8. #8
    Candidat au Club
    Homme Profil pro
    etudiant
    Inscrit en
    Mai 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : etudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    La modif' effectuée :
    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
    20
    21
    22
     
     
     
    mycsv<-xls2csv(fichierexcel, sheet=sheetcomment,verbose=TRUE, dec = ".")
     
    tableaubrut<<-read.csv(summary(mycsv)$description,fileEncoding="LATIN1",skip=skipcomment,sep=",")
     
    for( i in 1:max(dim(tableaubrut))) {
    V1=paste('COMMENT ON COLUMN ',schema_destination,'.',nom_table_a_creer,'.',tableaubrut[,i],' is ' , '\'',names(tableaubrut[0,][i]),sep="")
    # enleve les caracteres speciaux si plus a rajouter 
    V1=gsub ("d'","d ",V1)
    V1=gsub ("l'","l'' ",V1)
    V1=gsub ("é","e",V1)
    V1=gsub ("Ã*","a",V1)
    V1=gsub ("é","e",V1)
    V1=gsub ("è","e",V1)
    #on remets le ' de la fin de chaine (gsub aavant !!)
    V1=paste(V1,'\';','\n')
    # mets le bloc en un seul element 
    dbGetQuery(con,paste(V1,collapse=''))
    }
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PPT-2007] Importation données excel sous powerpoint
    Par Dr NO dans le forum VBA PowerPoint
    Réponses: 3
    Dernier message: 23/05/2012, 17h17
  2. Importer les données Excel sous Vb 2008
    Par MissNoura dans le forum VB.NET
    Réponses: 1
    Dernier message: 25/05/2010, 14h20
  3. importer donnée saisie sous excel
    Par benoit_iund dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 16/04/2008, 13h47
  4. [BO 6.5.1][VBA]Import données BO sous EXCEL. HELP
    Par sweetsugar dans le forum SDK
    Réponses: 2
    Dernier message: 15/02/2008, 13h37
  5. import de donnée excel sous word
    Par CoOki_ dans le forum Word
    Réponses: 5
    Dernier message: 17/08/2007, 18h16

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