Vous n'êtes pas identifié(e).
Bonjour,
Si vous utilisez "FABR_PRO" comme nom de table, il faut utiliser la même valeur dans l'expression définissant la contrainte :
ALTER TABLE public."FABR_PRO"
ADD CONSTRAINT ck_prix_fabrication CHECK ("FABR_PRO".prix_fabrication < 1000)NB : il est vivement recommandé d'utiliser des noms d'objets tout en minuscules
Bonjour,
Vous pouvez utilisez shp2pgsql dans un script (batch ou bash) qui est fourni avec PostGIS.
Merci de na pas "cross-poster" ou au moins de l'indiquer...
Vous confondez le moteur de bases de données (serveur) et l'interface qui permet d'y accéder (client).
Effectivement le type enum permet définir une liste finie de valeurs qui est contrôlée/exploitée en interne par le moteur de base de données.
Vous voulez faire la même chose côté utilisateur.
Vos formulaires sont définis dans QGIS qui fournit l'interface de saisie/consultation/visualisation des données stockées dans une base de données PostgeSQL/PostGIS
Vous pouvez récupérer la liste de valeurs à partir des colonnes d'une couche (qui peut être sans géométrie) mais de toute façon la liste n'est pas chargée dynamiquement et elle est stockée ainsi que le formulaire dans le fichier <projet>.qgs que vous pouvez transmettre facilement.
Ce forum étant dédié à PgAdmin3, si vous avez d'autres questions, je vous invite à poursuivre sur le forum dédié à QGIS sur georezo.net ou ForumSIG
Bonjour,
C'est effectivement au niveau de QGIS qu'il faut définir votre liste déroulante.
Dans QGIS3, Propriétés de la couche > Formulaire d'attributs
Choisir le Type d'outil "Liste de valeurs" pour le champ concerné et saisir les valeurs requises ou importer un .csv
Bonsoir,
Ce forum est francophone, c'est pourquoi je vous réponds en français.
Il faut indiquer à Postgres que la partie entre guillemets simples représente une seule valeur de type texte.
CREATE TABLE t1 (id INTEGER, testvalues TEXT);
COPY t1 FROM '/opt/Data/TestInfo.dat' WITH CSV DELIMITER AS ',' QUOTE AS '''' NULL AS '';
SELECT * FROM t1;NB: il est recommandé d'utiliser des noms d'objets (tables, colonnes, etc..) en minuscules (Postgres les convertira de toute façon en minuscules à moins de les mettre entre guillemets doubles)
Bonsoir,
Il faut regarder dans le fichier postgresql.conf de chaque instance, quel port est utilisé.
C'est le port utilisé pour la connexion (5432 par défaut) qui détermine l'instance à laquelle on se connecte.
ps ax | grep postgresqlpermet de lister les instances en cours d'exécution et l'emplacement du postgresql.conf que chacune utilise
Bonsoir,
SELECT * FROM carmanagement AS t1 WHERE "date" = (SELECT MAX("date") FROM carmanagement AS t2 WHERE t2.u = t1.u GROUP BY u )
Bonjour,
Difficile de vous aider sans plus de précisions.
Vous devriez poster le code de votre fonction.
Bonjour,
Le fichier "file.sql" sera créé dans le répertoire actif au lancement de la commande.
Vous pouvez utiliser la commande pwd pour savoir dans quel répertoire vous vous trouvez avant de lancer la commande (ou juste après)
Bonjour,
Je ne suis pas expert Windows Server mais :
- ces processus sont lancés par le service (pg_ctl.exe) et je connais pas de moyen de changer la priorité autrement que via le gestionnaire ds tâches.
- à ma connaissance, Microsoft déconseille de définir la priorité à "Haute" ou "temps réel" pour plus d'un processus (risque de blocage du à l'attente de la fin d'un processus moins prioritaire); il faut s'assurer que toutes les ressources (processeur(s)/coeur(s) ne sont pas monopolisées par un processus prioritaire qui attendrait la fin d'un processus moins prioritaire.
- aussi je laisserai Windows gérer la question.
Bonjour,
La réponse concernait PG Admin III. ¨L'option a peut-être disparu dans PGAdmin IV.
Bonsoir,
Le nom du répertoire contenant les données de la BD est égal à l'OID de la BD.
(Ex les données de la BD d'OID 18331 sont dans le répertoire ..../data/base/18331)
Globalement (jamais effectué) :
- installer PostgreSQL sur une machine accessible depuis internet
- installer l'extension postgres_fdw
- configurer une source ODBC sur la base Access
- initier la connexion avec le fdw odbc
Sinon, une piste peut être la création d'un ou plusieurs fichiers sql ou csv, automatisée depuis access, transfert de ce(s) fichier(s) sur le serveur Postgres et mise à jour de la bd Postgres par exécution programmée du ou des scripts SQL adéquat(s)
Une autre voie (surement la plus simple pour un débutant) serait une macro sous Access qui se connecte à PostgreSQL via ODBC et réalise les mises à jour désirées.
Dans tous les cas, vous aurez besoin d'un minimum de compétences sur PostgreSQL ainsi qu'en SQL et de faire un minimum de développement.
Bonjour,
Je passerais par un script, lancé par une tâche planifiée qui se connecte à la bdd Access via un "foreign data wrapper" ODBC et récupère les données voulues.
Lorsque vous rentrez les valeurs de vos paramètres, il faut saisir les guillemets simples pour les chaines de caractères (ou les mettre dans le fichier.bat) :
.bat
set /P val1=Nom ?
set /P val2=Age ?
psql --set param1=%val1% --set param2=%val2% -f c:/temp/toto.sqlqui donne :
Nom ?'titi'
Age ?25
psql --set param1=%val1% --set param2=%val2% -f c:/temp/toto.sql
?column? | ?column?
----------+----------
titi | 25
(1 ligne)ou
set /P val1=Nom ?
set /P val2=Age ?
psql --set param1='%val1%' --set param2=%val2% -f c:/temp/toto.sqlqui donne
Nom ?titi
Age ?25
psql --set param1='%val1%' --set param2=%val2% -f c:/temp/toto.sql
?column? | ?column?
----------+----------
titi | 25
(1 ligne)Bonjour,
Ce n'est probablement pas un problème PostgreSQL. Si vous n'avez pas déjà modifié le fichier la configuration par défaut, je penserais plutôt à une barrette mémoire défaillante. Sinon, je reviendrais en priorité à la configuration par défaut.
L'erreur se produit-elle avec d'autres applications ?
Bonjour,
L'équivalent Windows de l'exemple de Julien est (à titi près) si toto.sql est dans c:\temp et si le chemin de psql.exe est dans la variable PATH
set val1='titi'
set val2=42
psql --set param1=%val1% --set param2=%val2% -f c:/temp/toto.sql
?column? | ?column?
----------+----------
titi | 42
(1 ligne)Vous devriez vous en sortir en utilisant une commande du style
psql --set nom_variable1=valeur1 --set nom_variable2=valeur ... -f fichier.sqlet en utilisant ensuite « :nom_variable » à la place de votre valeur en dur.
Beaucoup plus simple !
Bonjour,
Clairement ce n'est pas un problème PL/pgSQL mais plutôt "batch Windows".
Vous devriez arriver à vos fins en utilisant "sed" (voir http://unxutils.sourceforge.net/ ou http://gnuwin32.sourceforge.net/) en insérant la commande sed adéquate avant l'exécution de psql
Gardez les variantes pour la suite...Merci de copier le code complet de la fonction (en l'encadrant avec les balises de code, ([ code ] et [ /code ] sans les espaces)
Les guillemets ne sont pas corrects, c'est :
EXECUTE 'COPY (SELECT data FROM tmp WHERE id = 1) TO ''D:/_users/BMI/' || directory || '''';[EDIT] Merci rjuju !
dans la doc l'archive_command pour windows reseemble plutôt à ça :
archive_command = 'copy "%p" "C:\\server\\archivedir\\%f"' # WindowsIl manque donc pour vous la lettre du lecteur.
Désolé mais je ne travaille jamais avec un postgresql sous windows...donc je tâtonne aussi.
S'agissant d'un chemin réseau Windows, la syntaxe utilisée par asdean est correcte. Le chemin indiqué dans la doc est un chemin local (qui pourrait pointer sur un lecteur réseau) d'où la lettre identifiant le lecteur en première position.
Il y a confusion entre les antislashes doublés dans une affectation et le double antislash introduisant un nom de machine ou adresse IP (ce qui dans une affectation donne 4 antislashes !)
Comme le dit rjuju c'est un problème de droits de l'utilisateur exécutant le service.
Vous pouvez les vérifier avec Propriétés : Onglet Sécurité puis Avancé et onglet Autorisations effectives
Bonjour,
Fichier > Préférences > Editeur de requêtes : Nombre maximum de caractères par colonne
Je suis dans une structure organisée en agences sur différentes régions.
L'idée est de proposer un outil qui puisse tourner sur n'importe quel poste, qu'il soit connecté au réseau de la structure ou non, pour réaliser un certain nombre de calculs et d'analyses géographiques. Sachant que de toutes façons il n'y a pas de serveur de base de données géographiques unique, chacun se crée son propre serveur sur son propre ordinateur au besoin... (j'espère utiliser les bons termes et me faire comprendre...)
Effectivement, le fonctionnement client/serveur au sens strict (avec dees données centralisées) est exclu
Les utilisateurs de l'outil ne sont pas forcément adeptes de logiciels cartographiques, ou de gestionnaires de base de données, et encore moins de SQL...
C'est pourquoi je cherche à créer cet outil le plus simple possible pour les utilisateurs à venir, sans trop de manipulations et de termes ou noms de logiciels abracadabrantesques
Ils sont tous en Windows mais avec une grande disparité de version (de XP -oui oui- à 10?)L'installation de Postgresql/PostGis + la disponibilité de psql.exe + la disponibilité de shp2pgsql.exe + le script batch + le(s) fichier(s) .sql + les fichiers csv ou shp me semble une bonne alternative.
Je crois que vous n'échapperez pas à une acquisition minimale de compétences pour les utilisateurs donc de formation (SQL et QGIS).
Ainsi, je souhaitais transmettre l'outil au travers d'un dossier de fichiers [BILAN] avec une arborescence fixe contenant :
- les .exe nécessaires (Postgresql, psql, shp2pgsql, PgAdminIII pour les plus avertis - avec les bonnes versions car elles sont appelées dans le batch)
- les scripts batch et sql
- les fichiers de données permanents au format csv et/ou shp que les scripts importeront dans la base de données
- les fichiers de "données d'entrées" au format csv et/ou shp que l'utilisateur aura à remplacer et que les scripts importeront dans la base de données
- les fichiers résultats produits par les scriptsEt demander à l'utilisateur :
- d'installer Postgresql/PostGis sur leur poste (et PgAdminIII pour les plus avertis)
- de créer la base avec les paramètres indiqués dans mon script batch (ou alors je peux le faire par le script peut-être plus simple ?)
- d'enregistrer le dossier de fichiers [BILAN] au bon endroit (C:\Users\Public\Documents\) afin que les scripts puissent bien tourner
- de lancer le fichier batchLes "données d'entrée" pour l'analyse sont :
- soit fournies par l'outil : je les ai inclus dans les dossiers de l'outil pour qu'ils soient importés (fichiers shp ou csv) à chaque lancement des analyses. J'avais aussi pensé à un dump, et je ne jette pas l'idée car je pense que j'ai finalement tout intérêt (en complément du script de création de la base ? ... je n'ai encore pas fait ce genre de code)
- soit récupérées auprès d'autres contributeurs : l'utilisateur doit les enregistrer au bon format au bon endroit et l'outil vient les récupérer pour les importer dans la base postgresql.J'espère avoir été "limpide" dans ces explications ?...
Qu'en pensez-vous ? Est-il possible de simplifier encore ?
PgAdmin sera peut-être plus accessible que psql pour des utilisateurs habitués à Windows
Cela supposerait de préparer une installation personnalisée d'un kit de votre environnement: PostgreSQL+QGIS+données.
C'est possible via des outils Inno Setup, NSIS ou Wix qui permettent de gérer ce qui est installé (ou pas), l'organisation des répertoires, et les versions de Windows. Mais c'est loin d'être anodin et suppose là aussi un minimum de compétences
D'avance merci
PS : j'ai encore un gros problème de compréhension et donc de gestion des jeux de caractères, entre le serveur, le client, les fichiers bat et sql... Je suppose qu'il vaudrait mieux poser la question dans un autre post ? Encore merci !
En effet. Une recherche sur les termes "locale", "encodage", "encoding"dans la doc de PostgreSQL devrait déjà vous donner quelques réponses.