Vous n'êtes pas identifié(e).
Bonsoir,
Cela semble normal.
Il faut également le paquet postgresql-12-postgis-2.5-scripts ("To create the PostGIS extensions in a PostgreSQL 12 database, the
postgresql-12-postgis-2.5-scripts package must be installed as well" d'après https://www.ubuntuupdates.org/package/p … stgis-2.5)
S'il s'agit de simple consultation avec QGIS, il me semble plus simple de créer une vue :
CREATE VIEW surfaces AS
WITH cte AS (SELECT SUM(surfaces) AS total, site FROM table GROUP BY site)
SELECT gid,secteur,site,type_surf,surface,code_ent,convention,cte.total AS surface_to FROM table t LEFT JOIN cte ON t.site = cte.siteet d'utiliser cette vue au lieu de la table dans QGIS; ce qui permet de "laisser tomber" la colonne "surface_to" de la table et le trigger.
L'appel de la fonction "nompm_func" est déclenché sur un INSERT ou un UPDATE. Donc, la colonne "nom_pm" d'une entité existante n'est mise à jour que si vous modifiez sa géométrie (colonne "geom")
Bonjour,
Je ne comprends pas, votre trigger se déclenche lors d'un INSERT/UPDATE de la table "suivi_immeuble" mentionnant la colonne "pm"...
D'après votre explication ce serait plutôt
CREATE TRIGGER nompm
BEFORE INSERT OR UPDATE OF geom
ON public.adresse
FOR EACH ROW
EXECUTE PROCEDURE public.nompm_func();jmarsac a écrit :Il faut vérifier/corriger l'encodage du fichier .txt contenant le script (D:/Users/jl3/intensetbm_test/intensetbm-etool/script2.txt par exemple)
OK mais comment fait-on avec Windows ?
Le plus simple est d'utiliser notepad++ qui permet de contrôler et convertir l'encodage du fichier (client psql 12, server 11.2); j'ai utilisé deux scripts différents :
itest-ansi.sql (encodé en ANSI) :
\encoding
set client_encoding to 'Win1252';
show client_encoding;
\l b1
insert into t2 values ('öéùàè','ANSI');
select * from t2;
set client_encoding to 'UTF8';
show client_encoding;
select * from t2;
set client_encoding to 'Win1252';
show client_encoding;
select * from t2;itest-utf8.sql (encodé en UTF8) :
\encoding
set client_encoding to 'Win1252';
show client_encoding;
\l b1
insert into t2 values ('öéùàè','UTF8');
select * from t2;
set client_encoding to 'UTF8';
show client_encoding;
select * from t2;
set client_encoding to 'Win1252';
show client_encoding;
select * from t2;********* QUERY **********
create table t2 (a text,script_encoding text);
**************************
CREATE TABLE
********* QUERY **********
set client_encoding to 'Win1252';
**************************
SET
********* QUERY **********
show client_encoding;
**************************
client_encoding
-----------------
WIN1252
(1 row)
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
------+----------+----------+--------------------+--------------------+-------------------
b1 | postgres | UTF8 | French_France.1252 | French_France.1252 |
(1 row)
********* QUERY **********
insert into t2 values ('öéùàè','ANSI');
**************************
INSERT 0 1
********* QUERY **********
select * from t2;
**************************
a | script_encoding
-------+-----------------
öéùàè | ANSI
(1 row)
********* QUERY **********
set client_encoding to 'UTF8';
**************************
SET
********* QUERY **********
show client_encoding;
**************************
client_encoding
-----------------
UTF8
(1 row)
********* QUERY **********
select * from t2;
**************************
a | script_encoding
-------+-----------------
öéùà è | ANSI
(1 row)
********* QUERY **********
set client_encoding to 'win1252';
**************************
SET
********* QUERY **********
select * from t2;
**************************
a | script_encoding
-------+-----------------
öéùàè | ANSI
(1 row)
********* QUERY **********
set client_encoding to 'Win1252';
**************************
SET
********* QUERY **********
show client_encoding;
**************************
client_encoding
-----------------
WIN1252
(1 row)
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
------+----------+----------+--------------------+--------------------+-------------------
b1 | postgres | UTF8 | French_France.1252 | French_France.1252 |
(1 row)
********* QUERY **********
insert into t2 values ('öéùà è','UTF8');
**************************
INSERT 0 1
********* QUERY **********
select * from t2;
**************************
a | script_encoding
------------+-----------------
öéùàè | ANSI
öéùà è | UTF8
(2 rows)
********* QUERY **********
set client_encoding to 'UTF8';
**************************
SET
********* QUERY **********
show client_encoding;
**************************
client_encoding
-----------------
UTF8
(1 row)
********* QUERY **********
select * from t2;
**************************
a | script_encoding
------------+-----------------
öéùà è | ANSI
öéùàè | UTF8
(2 rows)
********* QUERY **********
set client_encoding to 'Win1252';
**************************
SET
********* QUERY **********
show client_encoding;
**************************
client_encoding
-----------------
WIN1252
(1 row)
********* QUERY **********
select * from t2;
**************************
a | script_encoding
------------+-----------------
öéùàè | ANSI
öéùà è | UTF8
(2 rows)Comme le dit Pifor, l'important est de bien configurer l'encodage du client et d'utiliser la bonne page de code dans la console (chcp)
j'ai modifier runpsql.bat et je n'ai plus l'avertissement au lancement de psql (cool)
si je fait
INSERT INTO adm_pay (pay_nom_eng,pay_nom_fra,pay_abr) VALUES ('Ivory Coast','Côte d Ivoire','CIV');directement dans la console pslq pas de problème, il m'insère correctement les accents
mais si je lance le script depuis la console : \i 'D:/Users/jl3/intensetbm_test/intensetbm-etool/script2.txt' toujours un problème sur les accents...
Il faut vérifier/corriger l'encodage du fichier .txt contenant le script (D:/Users/jl3/intensetbm_test/intensetbm-etool/script2.txt par exemple)
regardez ce post https://forums.postgresql.fr/viewtopic.php?id=1060
vous aurez la solution
chcp 1252
psqlBonjour,
L'encodage de la console Windows est 850.
Faites :
chcp 1252
avant de lancer psql et tout devrait rentrer dans l'ordre
Bonjour,
Oui sous Debian; je pense qu'il en est de même sous Ubuntu
La description dit "This package contains client and administrative programs for PostgreSQL: these are the interactive terminal client psql and programs for creating and removing users and databases. "
Il contient donc les utilitaires "client": psql, createdb, createuser,etc..
Ce package est nécessaire sur les machines clients devant se connecter à une BD PostgreSQL installée sur une autre machine (serveur)
Ceci dit, vous devriez, si vous le pouvez, mettre à jour le système et PostgreSQL qui semblent tous les deux obsolètes
Bonjour,
Tout est dans le message d'erreur, le fichier /usr/share/postgresql/11/extension/pgsentinel.control est introuvable
Si vous avez suivi ce tutoriel d'installation (https://blog.dbi-services.com/pgsentine … ostgresql/), je pense qu'il faut remplacer
cp pgsentinel.control /usr/pgsql-10/share/extension
cp pgsentinel--1.0.sql /usr/pgsql-10/share/extension
cp pgsentinel.so /usr/pgsql-10/libpar
cp pgsentinel.control /usr/share/postgresql/11/extension
cp pgsentinel--1.0.sql /usr/share/postgresql/11/extension
cp pgsentinel.so /usr/lib/postgresql/11/libpour copier les fichiers dans les répertoires correspondants à votre installation de PostgreSQL
Problème réglé !!
J'ai du réinstaller la suite Office 365 qui avait été installé en 32 bits et non en 64 bits ce qui posait le problème d'incompatibilité.
Donc aucun soucis du côté de PostgreSQL
Bonsoir,
Pour info, la source ODBC doit utiliser la même architecture que le client qui l'utilise (et non le serveur qu'elle interroge). Par conséquent
Office 32 bits + ODBC 32 bits pour connection à PostgreSQL 32 ou 64 bits OK
Office 64 bits + ODBC 32 bits pour connection à PostgreSQL 32 ou 64 bits KO
Office 32 bits + ODBC 64 bits pour connection à PostgreSQL 32 ou 64 bits KO
Cela me fait penser à une fin de ligne Windows, copiée/collée dans un script unix.
Si dans psql vous faites
CREATE DATABASE base_1;
puis
\l
qu'obtenez-vous ?
Comme Guillaume, je n'ai jamais fait mais je regarderais du côté du pilote ODBC (version, paramètres).
Bonjour,
Lors d'une insertion NEW.id_A est nul.
Il faut remplacer
IF (TG_OP = 'INSERT') THEN SELECT nextval('seq_id_A') INTO id_A;
INSERT INTO TableA (id_A, num_A)
VALUES (DEFAULT, NEW.num_A);par
IF (TG_OP = 'INSERT') THEN SELECT nextval('seq_id_A') INTO NEW.id_A;
INSERT INTO TableA (id_A, num_A)
VALUES (NEW.id_A, NEW.num_A);sinon NEW.id_A reste nul et l'utilisation de DEFAULT génère une nouvelle valeur de la séquence qui est utilisée dans tableA
mais la valeur saisie sera ignorée si vous indiquez la valeur de "id_A" dans la requête INSERT (ce qui ne devrait jamais être le cas puisque vous utilisez une séquence)
j'utiliserais plutôt deux triggers distincts :
-le premier déclenché par les modifications sur la vue qui met à jour tableA
- le second déclenché par les modifications sur tableA qui met à jour tableB
Bonjour,
OFFSET est un mot réservé, vous pouvez renommer la variable en v_offset (par exemple).
Bonjour,
Soit user1 et user2 sont des rôles Postgres, ou bien à chacun correspond un rôle Postgres spécifique et vous appliquez la solution donnée par arthurr.
Soit ce sont des utilisateurs "virtuels" gérés par votre application et c'est à elle de gérer également le nombre limite de connexions pourchaque utilisateur "virtuel"
Bonjour,
Pouvez-vous fournir au moins un extrait du csv. Comme l'a déjà dit Guillaume, difficile de raisonner dans le vide.
Oui.
Pour supprimer le dernier ';' :
Sous linux ou unix avec "vi":
:1,$s/\;$//
Sous Windows (avec notepad++ou tout éditeur supportant les expressions rationnelles) :
Recherche > Remplacer...
Recherche: \;$
Remplacer par : <vide>
Cocher la case "Expression regulière" puis cliquer sur "Remplacer tout"
Un ';' en fin de ligne dans le csv ?
Bonjour,
En complément, il y a quelques mois Daniel Vérité a publié sur son blog à propos d'un pager pour psql qui semblait prometteur
Bonjour,
Personnellement, je trouve plus simple d'utiliser le système de tâches planifiées de l'OS (crontab sous linux et autre unixlike, Planificateur de tâches sous Windows)
Vous devriez regarder la doc sur SEARCH_PATH
Quel est le message d'erreur ?
Il me semble qu'il y a une erreur dans le nom de la table 0 au lieu de O