Welcome Guest! Log in
×

Notice

The forum is in read only mode.
Stambia versions 2.x, 3.x, S17, S18, S19 and S20 are reaching End of Support January, 15th, 2024. Please consider upgrading to the supported Semarchy xDI versions. See Global Policy Support and the Semarchy Documentation.

The Stambia User Community is moving to Semarchy! All the applicable resources have already been moved or are currently being moved to their new location. Read more…

Topic-icon Question Intégration de données d'un fichier vers une base PostGre SQL

More
24 Feb 2020 11:45 - 24 Feb 2020 11:52 #1 by Virginie_Samson
Bonjour
Nous chargeons un fichier plat (CSV) dans une table existante PostGre.
Le compte utilisé a bien le droit d'écrire dans la table, mais il n'a pas les droits de créer de nouvelles tables... donc plante à la création des tables de LOAD.

Existe t il une option pour qu'il ne créé par ces tables temporaires de chargement et écrivent directement à la cible, dans les templates
- LOAD File to PostGre SQL (with Copy) (Dernière maj : 21/08/2018)
- INTEGRATION PostgreSQL (Dernière maj : 7/2/2019)

Merci d'avance
Cordialement
Virginie
Last edit: 24 Feb 2020 11:52 by Virginie_Samson.
More
25 Feb 2020 17:31 #2 by Samia ENNAJI
Bonjour,

Si vous voulez charger le contenu d'un fichier csv dans une table sans transformation (append mode), vous pouvez utiliser le template "Integration rdbms to rdbms (no load).tp".

En utilisant ce template, les données seront chargées directement dans la table cible ( sans passer par des tables intermédiaires).

Cependant, dans le cas où vous voulez appliquer des transformations à vos données, je vous propose de créer un nouveau schema sur la base en affectant les droits de création de nouvelles tables au compte utilisé.

Vous pouvez ensuite préciser le nouveau schema au niveau de 'work schema' de la metadata postgres.



A disposition pour toute information complémentaire.
Attachments:
    More
    26 Feb 2020 09:21 - 26 Feb 2020 09:24 #3 by Virginie_Samson
    Bonjour Samia
    Merci pour ton retour, nous avons justement testé la 2eme méthode, avec une création des tables temporaires sur le schéma de travail associé au compte utilisé par Stambia.
    Il semble que la technique soit la bonne, mais le code généré pose un souci technique

    Exemple de requête générée:
    COPY db_sgam_probtp_dev.sgam_probtp_dev_5.L1_adhesion (L36_DT_DEB_VAL, L37_DT_FIN_VAL, L1_origine_flux, L2_siren, L3_nic, L4_munaent)
    FROM '\\DW\Chaines\EDW/ADHESION.dat'
    WITH
    DELIMITER ','
    CSV


    Et l'erreur que nous avons ensuite :
    org.postgresql.util.PSQLException: ERROR: must be superuser or a member of the pg_read_server_files role to COPY from a file
    Indice : Anyone can COPY to stdout or from stdin. psql's \copy command also works for anyone.


    D'après notre DBA, la commande utilisée est incomplète
    Cf : aurlen.net/w/en/error-must-be-superuser-...uperuser-privileges/

    Il faudrait utiliser un \COPY et non juste COPY

    Cf document joint.
    This attachment is hidden for guests.
    Please log in or register to see it.

    Cordialement
    Virginie

    This message has an attachment file.
    Please log in or register to see it.

    Last edit: 26 Feb 2020 09:24 by Virginie_Samson.
    More
    02 Mar 2020 17:31 #4 by Samia ENNAJI
    Bonjour Virginie,

    Vous pouvez faire le test en ajoutant '\' dans le template pour générer la bonne requête?
    Si cela fonctionne pour vous, nous pouvons regarder de notre côté pour modifier le template pour une prochaine release.
    More
    03 Mar 2020 15:24 #5 by Virginie_Samson
    Bonjour Samia
    Comment dois je / puis je modifier le template ?

    Cordialement