PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#26 Re : Général » Cas d'application Fonction de table » 23/07/2018 16:35:22

Pardon, PG10 = la documentation Postgresql 10.3, celle que l'on télécharge sur le site.
7.2.1.4 Fonctions de table, p.110 du PDF
Dans la suite du doc, une référence est faite avec XML, mais je ne pense pas que ce type de fonction se limite à XML.
J'ai lu cette sous-partie en voulant lire tout sur la partie relative aux requêtes. Merci smile

#27 Général » Cas d'application Fonction de table » 23/07/2018 10:31:44

databaser
Réponses : 3

Bonjour,


A quoi sert une "fonction de table", présentée dans la doc PGS10 ? Quelles sont ses applications ? A quoi servent-elles ? J'ai du mal à me projeter...
Sur Google, taper "fonction de table" ne renvoie rien...
Merci smile

#28 Général » Comportement nom colonne non réservé mot-clé SQL » 22/07/2018 18:34:55

databaser
Réponses : 1

Bonjour,

Avec pgAdmin4, j'ai un souci avec le nom de colonne ID.
Or, SELECT DISTINCT contenant ID a plusieurs comportements :
* ID tout court, la requête fonctionne. Néanmoins, le mot s'inscrit en lettres violet. -> Pourquoi est-ce en lettres bleues alors ce n'est pas un mot réservé selon l'annexe C "Mot-clé SQL" de la doc PGS10 ?
* 'ID' avec des quotes, le mot devient marron (comme les commentaires). La requête tourne sans arrêt. Si je stoppe, j'obtiens une colonne dans les résultats intitulée " ?column? " et les cellules remplies par des ID, ID, ID, ...
* entre "", "ID" (pour utiliser un mot réservé comme nom de colonne), le mot redevient noir. Mais la requête s'affiche comme erronée "la colonne ID n'existe pas", SQL state: 42703
Character: 37.
* si dans le SELECT j'indique NomTable.ID (sans quotes ou ""), la partie ID devient bleue et le reste noir.

Quésako ? sad Quelle présentation dois-je utiliser pour citer le nom de la colonne ? Merci smile

#29 PL/pgSQL » Comportement nom colonne non réservé mot-clé SQL » 22/07/2018 13:21:13

databaser
Réponses : 1

Bonjour,

Avec pgAdmin4, j'ai un souci avec le nom de colonne ID.
Or, SELECT DISTINCT contenant ID a plusieurs comportements :
* ID tout court, la requête fonctionne. Néanmoins, le mot s'inscrit en lettres violet. -> Pourquoi est-ce en lettres bleues alors ce n'est pas un mot réservé selon l'annexe C "Mot-clé SQL" de la doc PGS10 ?
* 'ID' avec des quotes, le mot devient marron (comme les commentaires). La requête tourne sans arrêt. Si je stoppe, j'obtiens une colonne dans les résultats intitulée " ?column? " et les cellules remplies par des ID, ID, ID, ...
* entre "", "ID" (pour utiliser un mot réservé comme nom de colonne), le mot redevient noir. Mais la requête s'affiche comme erronée "la colonne ID n'existe pas", SQL state: 42703
Character: 37.
* si dans le SELECT j'indique NomTable.ID (sans quotes ou ""), la partie ID devient bleue et le reste noir.

Quésako ? sad Quelle présentation dois-je utiliser pour citer le nom de la colonne ? Merci smile

PS : pgSQL c'est bien pour le SQL en général ? "pg" signifie postgre ? J'ai recréé le post dans Général car ce n'est pas lié au pgSQL! Donc, vous pouvez supprimer celui-ci svp... Merci! smile

#30 Re : Général » données supplémentaires après la dernière colonne att » 17/06/2018 15:15:35

Pour la partie de la question sur les données supplémentaires, j'avais oublié des variables dans mon code et après rectification, il fonctionne sad
Inattention due au nombre de variables...
Merci à tous!

#31 Re : Général » données supplémentaires après la dernière colonne att » 04/06/2018 10:37:50

Rq : Une cellule vide est mentionnée par ;=""; dans le CSV ouvert ds Notepad++. Or il apparaît que parfois, elle est mentionnée par ;; sans rien d'autre. Est-ce que cela influence le téléchargement ? Non à priori un autre fichier avec le même souci a été correctement COPY FROM.
A quoi cela est-ce dû ? Un problème d'enregistrement ? Une colonne qui aurait contenu des données que l'on aurait supprimées ? Pb de jointure je pense.

Autre rq : Notepad++ indique 2048 lignes (2047 car la dernière est entièrement vide) alors que PGS (dans une autre version du fichier, avec moins de colonnes) compte 2042 lignes (2043 avec la lignes des noms de colonnes). Pourquoi cette différence de 4 lignes ?
Merci! smile

#32 Re : Général » données supplémentaires après la dernière colonne att » 01/06/2018 21:05:42

Après suppression du ";", même résultat : "ERROR:  ERREUR:  données supplémentaires après la dernière colonne attendue"
Je ne sais pas si c'est utile de préciser la suite de l'erreur : "CONTEXT:  COPY fin, ligne 2 : «..."

#33 Re : Général » données supplémentaires après la dernière colonne att » 01/06/2018 17:19:48

j'ai un nombre de ";" égal au nombre de colonnes, donc il faut enlever le dernier ";", c'est bien cela ?
Le souci c'est que j'ai trop de lignes et de colonnes pour faire ça manuellement. Une idée ? Faut-il passer par du codage sous Python ou R ? Merci...

#34 Re : Général » données supplémentaires après la dernière colonne att » 01/06/2018 16:15:29

oui. Toutes les colonnes sont ainsi : ="contenu cellule"; (je vois cela qd j'ouvre dans le bloc-notes) Donc la dernière colonne est de cette forme. En quoi est-ce que le ";" de la fin de ligne est gênant ? Que faire ? Merci smile

#35 Re : Général » données supplémentaires après la dernière colonne att » 01/06/2018 14:28:21

merci ruizsebastien je viens de vérifier, aucun ; smile Il y a des ' mais ce ne doit pas poser problème...

#36 Général » données supplémentaires après la dernière colonne att » 01/06/2018 13:17:04

databaser
Réponses : 13

Bonjour,

J'ai un souci avec le fameux "ERROR:  ERREUR:  données supplémentaires après la dernière colonne attendue"
Mon CREATE TABLE recense toutes les colonnes de la table à importer.
La fin du Copy From est bien de type : with delimiter ';' NULL as '' CSV header ;
Le CSV à charger est correct.
Donc, svp, quel pourrait être le problème ?
Merci,

#37 Général » COPY pour un gros fichier » 14/05/2018 21:27:08

databaser
Réponses : 1

Bonjour,

J'aimerais utiliser un fichier de 8Go mais R bloque quand je tente de l'ouvre, donc je n'essaie même pas dans PGS... Est-ce possible de faire un COPY FROM ?
COPY ne permet pas de sélectionner des lignes au lieu de tout télécharger, si je ne me trompe pas ?
Faut-il passer par du Python ou autre langage ?
Du coup, un petit topo sur les capacités de PGS ?
Merci,

#38 Re : Général » longueur des variables » 14/05/2018 19:04:31

@deverite : dans ce cas, pourquoi est-ce que PGS conserve le char() dans ses types de variables ? Autant le supprimer et pour des raisons d'interopérabilité avec un autre logiciel, varchar() de PGS correspondrait au char() de tous les autres logiciels...

#39 Re : Général » longueur des variables » 14/05/2018 13:26:10

Merci pour toutes vos réponses, je regarde tout cela.

D'après la doc PGS10, vaut mieux mettre varchar tout simplement au lieu des char() pour une question de coût de stockage. Est-ce que dans ce cas, mettre une variable avec une contrainte de vérification CHECK "vérifier que la taille de la variable ne dépasse pas 5" à une VARCHAR, à la place d'une longueur donnée en utilisant CHAR(5), est judicieux ? Je ne pense pas mais je préfère vous demander votre avis. Merci smile

#40 Re : Général » longueur des variables » 10/05/2018 18:26:41

d'accord.

1/Pour l'espace, j'ai vérifié le contenu de la cellule, il n'y pas d'espace.
Julien, avez-vous remarqué que j'ai écris : ">9"="strictement supérieur à 9 caractères" et le résultat est un nom de 9 caractères sans aucun espace.

SELECT CODE
FROM BD.TABLE
WHERE LENGTH(CODE) >9;

Rq : LENGTH ou CHAR_LENGTH c'est le même résultat
Si je fais le même code avec LENGTH(CODE) =9, je retrouve toutes les autres lignes et elles, elles contiennent un espace après le code (du à : CREATE TABLE BD.TABLE
CODE char(10) )

De toute manière, max(char_length) ne compte que les caractères, pas les espaces, n'est-ce pas ? C'est pour cela que je vérifiais avec max(octet_length) qui prend en compte les espaces.


Pour la question 2/

CREATE TABLE BD.TABLE
(...)
NOMAFNOR char(42),
(...);
SELECT max(char_length(TABLE.NOMAFNOR))
FROM BD.TABLE;

Résultat : 32

SELECT max(octet_length(TABLE.NOMAFNOR))
FROM BD.TABLE;

Résultat : 42

Donc, le max(octet_length) = à l'espace que nous allouons à la variable lors de la création de la table.

#41 Re : Général » longueur des variables » 10/05/2018 17:47:44

Merci, Julien smile  Deux choses bizarres :

1/dans une table, une variable dont la longueur déclarée dans CREATE TABLE, est CODE char(10) (10 est un chiffre arbitraire) a :
un max(char_length) = 10 et min(char_length)=9. En principe, ce code a une longueur de 9 caractères.
Donc, pour trouver quelles lignes ont une longueur de 10, j'écris :

 SELECT CODE
FROM BD.TABLE
WHERE LENGTH(CODE) >9; 

Résultat : une ligne avec un code qui compte... 9 caractères! Pourquoi ce résultat ? Il n'y a aucun caractère spécial dans le code renvoyé (d'ailleurs, c'est un code avec des chiffres mais enregistré comme chaîne de caractères.) A noter : ce résultat se trouve à la ligne 1 de la table.
Ses : min(octet_length) = 10 et max(octet_length)=12. Pourquoi cette différence entre le max et le min ? A priori, tous les codes ont longueur de 9.


2/ Est-ce que le octet_length marche vraiment ? Je vous explique : ex :

Dans une table différente de ma question 1/, j'importe mes données avec une COPY FROM et par ex dans CREATE TABLE, j'ai créé une variable "nom varchar (100)"
Puis, je vérifie la taille des noms :

SELECT max(length(TABLE.NOM))
FROM BD.TABLE;

Si max(length) donne 15, cela signifie que le nom le plus long est une chaîne de caractère de longueur 15.
max(octet_length) = 100. La différence entre ces deux max est bien trop grande!
Et ceci vaut pour toutes les variables, ex : si ADRESSE varchar (255), le max(octet_length) sera de 255.

3/qu'est-ce qu'exactement ces octets ? Je lis PGS 10 mais pas encore certaine de la réponse
Merci beaucoup!

#42 Général » longueur des variables » 09/05/2018 17:31:49

databaser
Réponses : 12

Bonjour,

J'aimerais créer des variables de la longueur maximale de la chaîne de caractères la plus longue pour chaque variable.

Je mesure cela avec char_length la longueur des variables (qui sont toutes de type chaîne de caractères même si ce sont des chiffres. C'est dû au fichier source. Par la suite, je vais changer les types des numériques en numérique). Je peux faire char_length car j'ai mis longueur = 255 pour toutes les variables mais je vais changer ces longueurs.

1/ Certains caractères comme "oe" occuperaient plusieurs octets. Donc comment connaître la vraie longueur de ma variable puisque char_length ne prend pas en compte ces caractères ?

2/ Est-ce une bonne démarche ? Je fais cela pour stocker moins (je me dis que si on mets longueur 255, cela prend de la place).
Pensez-vous que ma démarche soit naïve ?
Je n'ai rien trouvé dans la doc de PGS 10.

Merci tongue

#44 Re : Général » Permission denied » 23/04/2018 16:39:38

j'ouvre pgAdmin4. Dans le Gestionnaire des tâches, onglet 'Services', il y a un "postgresql-x64-10", colonne 'Description' = 'postgresql-64-10 - PostgreSQL Server 10".

c'est ce dont vous parlez ? Son statut est en "Arrêté" mais si on clique "Ouvrir les services", on retrouve le même et 'Type de démarrage' = automatique.

Donc, où est le problème ? Merci...

Qu'est-ce que l'on doit modifier pour donner l'autorisation à l'utilisateur ?

Dans le manuel de PGS 10, il n'y a aucune indication, sauf erreur de ma part.

#45 Re : Général » Permission denied » 22/04/2018 20:11:10

Merci Julien. Si quelqu'un d'autre s'y connait, je serai reconnaissante d'avoir des retours smile
Je reviens sur certains détails des messages ci-dessus pour tenter de comprendre le problème puisque je regarde cette histoire de service windows mais je vois mal où chercher car via panneau de configuration ou gestionnaire des tâches : rien.

si j'ai bien compris, vous voulez dire que ce n'est pas PGS qui pose problème mais windows qui empêche l'accès à ses fichiers à l'utilisateur postgres, c'est bien cela ?

"Quand vous avez installé postgres, un utilisateur a probablement été créé (ou alors un utilisateur spécial a été utilisé)" --> oui, à l'installation, c'est l'utilisateur nommé postgres qui est créé. Pourquoi un autre utilisateur serait-il créé ?

PS : j'avais installé PGS9 l'an dernier, et parce que j'avais perdu le nom d'utilisateur (!!)de PGS pour connecter un autre logiciel à PGS, j'avais désinstallé PGS puis réinstallé à plusieurs reprises! Du coup, j'ai PGS 9.6 qui reste dans mon pgAdmin4 et PGS 10.
Merci

#46 Re : Général » Permission denied » 21/04/2018 23:55:49

merci, je ne comprends pas grand chose...

"service windows" --> càd ? De quel service s'agit-il ?
Comment aurais-je pu créer un utilisateur spécifique ? A quel endroit ?

Est-ce que cela peut être causée lors de la création de la BD ? Car on choisit certaines options (tablespace, etc)

" commande COPY est effectuée sur le serveur." --> je n'ai pas de serveur. En fait, la BD pour l'instant je la crée sur mon PC.

Dans les propriétés de PGS 10 dans pgAdmin4 : Host Name/Address : localhost

Merci...

#47 Re : Général » Permission denied » 21/04/2018 22:42:54

1/Voici le message en entier :

ERROR:  ERREUR:  n'a pas pu ouvrir le fichier « C:\Users\NOMUSER\Desktop\MONDOSSIER\Fichier.csv »  pour une lecture : Permission denied
HINT:  COPY TO indique au serveur PostgreSQL de lire un fichier. Vous pourriez vouloir utiliser la fonctionnalité \copy de psql pour lire en local.


SQL state: 42501

(j'ai juste remplacé mon chemin par des mots généraux pour le forum)

Pour le 3/ je viens de trouver : lors de l'enregistrement, il faut directement écrire : nomfichier.sql
Merci,

#48 Re : Général » Permission denied » 21/04/2018 21:09:02

Bonjour,

J'ajoute ma question ici car j'ai un nouveau souci (mais je ne suis pas sur le même PC ni la même table). Admin 4 et PGS 10.
1/
J'utilise COPY FROM et je sais que ma syntaxe est correcte. Mais voici la réponse !! :

 HINT:  COPY TO indique au serveur PostgreSQL de lire un fichier. Vous pourriez vouloir utiliser la fonctionnalité \copy de psql pour lire en local.
SQL state: 42501 

L'owner de la BD est postgres donc j'ai le privilège d'accès. Néanmoins, si je tente de vérifier avec :

2/
J'utilise

\dp

Réponse !! ::

 ERROR:  ERREUR:  erreur de syntaxe sur ou près de « \ »
LINE 1: \dp
        ^
SQL state: 42601
Character: 1 

3/ème point noir : j'enregistre l'onglet SQL de PGS en fichier de type SQL. Il est bien créé dans mon dossier de destination. Par contre, il n'a pas d'extension .SQL, c'est un "fichier" (?). Si je regarde dans les propriétés de ce "fichier", il est indiqué "fichier" dans type de document....

Que se passe-t-il svp ? Est-ce normal ? Merci...

#49 Re : pgAdmin4 » Erreur sans objet » 19/09/2017 18:32:53

@DanielVerite
Quel trigger ? Ds le Browser, au niveau de la table, si je clique sur "Triggers", il n'y a rien. Idem pour le "Triggers" au niveau de "Tables".
si le trigger injecte les variables sans les échapper correctement (erreur commune). -> c'est-à-dire ?
merci,

#50 Re : pgAdmin4 » Erreur sans objet » 19/09/2017 18:01:23

désolée... pgAdmin4, PG 9.6 + sous W10. Autre chose ? Les étapes sont indiquées dans mes messages précédents, merci,

Pied de page des forums

Propulsé par FluxBB