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

#51 Re : PL/pgSQL » Problème d'utilisation du pg_restore » 27/10/2016 14:45:19

Encore et toujours là Julien et une nouvelle fois merci de votre aide.

"bdd_provisoire" correpond au nom que je souhaite donner à la nouvelle BDD, j'aurais aussi pu mettre "choux-fleurs".

Si cette BDD existe déjà alors la remplacer. J'ai déjà testé avec "--if-exists" mais j'ai en retour le message :

illegal option --if-exists

(Je suis en version 9.1.9 de Postgres).

Alors j'ai utilisé -w dans l'objectif justement qu'il ne me demande pas de mot de passe étant donné que je lance cette commande en "Off" ou invisible pour l'utilisateur, il ne me faut donc pas de message de ce genre.

Je vais tester en ajoutant/enlevant les options  "-h et/ou -p et/ou -U" voir ce que ça peut donner...

#52 PL/pgSQL » Problème d'utilisation du pg_restore » 27/10/2016 14:09:14

Geo-x
Réponses : 4

Bonjour @ tous.

Ok, le sujet fait légèrement doublon avec mon dernier post mais promis, le contenu est différent, je m'explique.

Je tente de mettre en place une restauration de backup dans ma base de données.

Je souhaiterais que cette restauration, crée la BDD si elle n'existe pas ou la remplace si elle existe.

Alors j'ai testé mais en vain, j'ai testé ça :

pg_restore -h localhost -p 5432 -U postgres -C -d bdd_provisoire D:\mybackup.backup

Mais là j'ai "bdd_provisoire does not exist"

pg_restore -C -d bdd_provisoire -w D:\mybackup.backup

Mais là j'ai "fe_sendauth: no password supplied"

Auriez-vous une idée sur la façon de procéder ?

Par avance merci.

Geo-x

#53 Re : PL/pgSQL » pg_restore en SQL » 20/10/2016 13:42:02

C'est bien ce qu'il me semblait.

Merci rjuju.

Geo-x

#54 PL/pgSQL » pg_restore en SQL » 20/10/2016 12:11:33

Geo-x
Réponses : 2

Bonjour@ tous.

Savez-vous s'il est possible de lancer la commande pg_restore par l’intermédiaire d'une requête SQL ?

En vous remerciant par avance.

Geo-x

#55 Re : PL/pgSQL » Sélection sur une seule ligne à partir d'un tableau » 30/09/2016 09:47:07

Ah, je ne savais pas que c'était possible de faire un Max sur du texte.

Merci beaucoup de cette information !

Geo-x

#56 Re : PL/pgSQL » Sélection sur une seule ligne à partir d'un tableau » 26/09/2016 11:55:43

Bonjour Marc.

Alors en effet ce pourrait être une belle solution si je parlais de chiffres uniquement, mais est-il possible de faire la même chose par exemple avec du caractère ? (Et oublions la contrainte de la question qui était de ne pas dupliquer le select).

#57 Re : PL/pgSQL » Sélection sur une seule ligne à partir d'un tableau » 26/09/2016 11:13:58

Je relance le sujet puisque je suis à nouveau confronté à une problématique similaire à laquelle je n'arrive pas à répondre.

#58 Re : PL/pgSQL » Comparaison de deux champs » 13/04/2016 10:22:51

Perfecto ! (comme toujours)

Merci beaucoup !

#59 PL/pgSQL » Comparaison de deux champs » 13/04/2016 10:07:29

Geo-x
Réponses : 2

Bonjour @ tous.

J'ai une question toutes bête à laquelle je suis confronté.

Je souhaiterais faire une comparaison entre le contenu de deux champs pour voir si une partie du champ 1 est contenue dans un champ 2.

Exemple (qui ne marche pas bien sûr dans ce cas) :

SELECT 1 WHERE 'CHAMP' ILIKE 'ACHAMPE'

En vous remerciant par avance.

Geo-x

#60 Re : PL/pgSQL » Faire un pg_dump en modifiant le nom de la table » 28/01/2016 16:45:53

Oui ça peut marcher également et je pense que je vais faire comme ça c'est encore plus simple !

Merci beaucoup pour votre aide !

Geo-x

#61 Re : PL/pgSQL » Faire un pg_dump en modifiant le nom de la table » 28/01/2016 16:24:52

Et non, c'eut été trop beau !

L'idée c'est, par exemple, dans ma BDD1 j'ai une table TABLE1 que je dois mettre à jour avec une table TABLE2 présente dans la BDD2 et qui a le même nom que la TABLE1. Du coup il faudrait que je puisse copier cette TABLE2 dans la BDD1 pour faire la mise à jour sans écraser l'autre ou sans être gêné.

Jusqu'à maintenant je faisais avec un dblink ce qui me permettait de faire la modification du nom, mais le problème c'est qu'il faut déclarer les champs 1 par 1 et là ça devient un peu trop lourd à gérer.

Alors en effet, comme vous dite, ce que je peux toujours faire c'est renommer ma TABLE2 avant l'import mais c'est aussi ce que je voulais éviter.

Geo-x

#63 Re : PL/pgSQL » Faire un pg_dump en modifiant le nom de la table » 28/01/2016 12:29:12

Ben c'est sûr que le démon est loin d'être parfait ...

Ok merci du coup de main, je test dès que possible !

#64 Re : PL/pgSQL » Faire un pg_dump en modifiant le nom de la table » 28/01/2016 12:24:02

Bonjour Sébastien, merci de votre réponse.

Je suis sur serveur Windows (et oui personne n'est parfait ;-) ) et visiblement la commande 'sed' n'est pas reconnue.

Geo-x

#65 PL/pgSQL » Faire un pg_dump en modifiant le nom de la table » 28/01/2016 12:12:37

Geo-x
Réponses : 12

Bonjour @ tous.

Je souhaiterais copier une table d'une BDD1 > BDD2 en modifiant le nom de la table d’origine.

Pour ça j'utilise les commandes :

pg_dump -U postgres -h localhost -t TABLE1 BDD1 > dump.sql

psql -U postgres -h localhost -d BDD2 < dump.sql

Le problème c'est qu'il conserve le nom d'origine de ma table et je ne sais pas comment faire pour le modifier dès l'enregistrement.

Avez-vous une idée ?

Geo-x

#66 Re : PL/pgSQL » Liaison table et vue » 02/11/2015 09:43:16

Merci Guillaume pour ces précisions.

Alors dans le cas d'une fonction qui est censé agir sur des tables, comment faire en sorte qu'elle ne s'arrête pas si la table en cours de modifications est également utilisée par une vue ?

Geo-x

#67 PL/pgSQL » Liaison table et vue » 30/10/2015 17:24:21

Geo-x
Réponses : 3

Bonjour @ tous.

Dans ma BDD, je souhaiterais mettre à jour le type de champ de certaines tables par le biais d'une fonction.

Malheureusement, je me suis rendu compte que ma fonction bloquait à partir du moment ou de ces tables dépendent des vues.

Ma question est donc la suivante :

- Est-il possible de modifier un type de champ d'une table en cascade afin d'impacter la vue ?
- Dans le cas ou ce n'est pas possible, est-il possible de détecter les tables faisant l'objet d'une utilisation par le biais d'une vue ?

En vous remerciant par avance.

Cordialement.

Geo-x

#68 Re : PL/pgSQL » Utilisation des index » 04/08/2015 10:28:28

Un grand merci rjuju c'est exactement ce que je cherchais !

C'est ça qu'il faudrait sur la doc officiel, du concret et du concis.

Geo-x

#69 PL/pgSQL » Utilisation des index » 04/08/2015 10:10:13

Geo-x
Réponses : 2

Bonjour @ tous.

Je souhaiterais savoir ou il était possible de visualiser le niveau d'utilisation des index par table ?

(Il ne s'agit pas là de tester l'utilisation des index "à la volée" avec EXPLAIN ANALYZE mais bien d'utiliser les statistiques existantes)

Par avance merci.

Geo-x

#70 PL/pgSQL » ORDER BY sur un champ mixte » 26/05/2015 10:05:47

Geo-x
Réponses : 1

Bonjour @ tous.

Une question me taraude, je souhaite faire un ORDER BY sur une colonne déclarée en varchar et qui contient à la fois des numéros et à la fois des lettres.

Ça donne quelque chose du genre :

Col1
------
A
1
10
2
3
12
AA
B

et je souhaiterais que ça puisse donner :

Col1
------
1
2
3
10
12
A
AA
B

J'imagine qu'avec un CASE on devrait pouvoir en tirer quelque chose, mais j'avoue buter un peu là.

Geo-x

#71 Général » Utilisation fonction AsTopoJson » 16/03/2015 20:40:28

Geo-x
Réponses : 0

Bonjour @ tous.

Je n'ai aucune difficulté à récupérer le résultat d'une fonction au format geojson avec Postgres, en revanche lorsque j'essaie de générer un résultat au format TopoJson avec la fonction AsTopoJson mais je n'y arrive pas vraiment.

Je pense manquer d'exemples concrets et le seul disponible sur le site postgis est difficilement adaptable.

Avez-vous déjà utilisé cette fonction? Et auriez-vous quelques exemples?

En vous remerciant par avance.

Geo-x

#72 Re : PL/pgSQL » Trigger générique historisation sur delete » 31/12/2014 11:00:35

Bonjour Guirom.

J'ai créé une fonction trigger qui permet l'enregistrement des données modifiées dans uen table historique.

Pour cela j'ai commencé par créer la table dans laquelle sont enregistrés les éléments modifiés :

CREATE TABLE historique
(
  ogc_fid serial NOT NULL,
  table_modif character varying(120),
  type_modif character varying(120),
  ogc_fid_modif integer,
  date_modif date,
  heure_modif time without time zone,
  original_data text,
  new_data text,
  CONSTRAINT historique_pkey PRIMARY KEY (ogc_fid )
)
WITH (
  OIDS=FALSE
);
ALTER TABLE historique
  OWNER TO postgres;

Puis j'ai créé la fonction trigger :

CREATE OR REPLACE FUNCTION historique()
  RETURNS trigger AS
$BODY$
DECLARE
    old_data text;
    data_modif text;
BEGIN

    IF (tg_op = 'UPDATE')
	
	THEN
        old_data := ROW(OLD.*);
        data_modif := ROW(NEW.*);
        INSERT INTO historique (table_modif,type_modif,ogc_fid_modif,date_modif,heure_modif,original_data,new_data) 
		VALUES (tg_table_name::text,'Update',NEW.ogc_fid,current_date,current_time,old_data,data_modif);
        RETURN NEW;
		
    ELSIF (tg_op = 'DELETE')
	
	THEN
        old_data := ROW(OLD.*);
	data_modif := NULL;
        INSERT INTO historique (table_modif,type_modif,ogc_fid_modif,date_modif,heure_modif,original_data,new_data) 
		VALUES (tg_table_name::text,'Delete',OLD.ogc_fid,current_date,current_time,old_data,data_modif);
        RETURN OLD;
		
    ELSIF (tg_op = 'INSERT')
	
	THEN
	old_data := NULL;
        data_modif := ROW(NEW.*);
        INSERT INTO historique (table_modif,type_modif,ogc_fid_modif,date_modif,heure_modif,original_data,new_data) 
		VALUES (tg_table_name::text,'Insert',NEW.ogc_fid,current_date,current_time,old_data,data_modif);
        RETURN NEW;
		
    END IF;

END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;

Et pour finir, j'applique à chaque table pour laquelle je souhaite enregistrer les modifications le lancement de la fonction trigger :

CREATE TRIGGER historique
  BEFORE INSERT OR UPDATE OR DELETE
  ON table
  FOR EACH ROW
  EXECUTE PROCEDURE historique();

Mais peut-être existe-t-il des méthodes plus simple, que je ne connais pas et pour lesquelles je serais curieux de connaitre l'existence.

Geo-x

#73 PL/pgSQL » Utilisation crosstab ou autre solution ? » 09/12/2014 11:07:35

Geo-x
Réponses : 1

Bonjour @ tous.

Je galère un peu à utiliser la fonction crosstab (que je n'arrive pas vraiment à utiliser) sans vraiment savoir s'il s'agit de la solution idéale, je m'explique :

J'ai une table qui contient les champs suivants :

Col1           Col2
Service1      2014-02-10
Service1      2014-02-10
Service1      2013-02-10
Service2      2011-02-10
Service3      2012-02-10
Service3      2013-02-10

Ce que j'aimerais obtenir c'est :

Col1          2011    2012    2013    2014
Service1      0       0       1       2
Service2      1       0       0       0
Service3      0       1       1       0

Pour obtenir ce résultat j'ai tenté un crosstab dont j'ai visiblement du mal à comprendre le comportement en faisant :

SELECT * FROM crosstab (
'SELECT service,COUNT(*) nb,EXTRACT(YEAR FROM date)AS annee FROM device GROUP BY service,EXTRACT(YEAR FROM date) ORDER BY service,EXTRACT(YEAR FROM date)' ,
'SELECT DISTINCT EXTRACT(YEAR FROM date) AS annee FROM device')
as (service varchar,"2010" numeric, "2011" numeric, "2012" numeric, "2013" numeric, "2014" numeric)

Et le résultat de cette requête me donne :

Col1            2011  2012  2013  2014
Service1
Service2 
Service3

Merci de votre aide.

Geo-x

#74 Re : PL/pgSQL » quote to NULL » 18/11/2014 17:52:26

Oui en effet, pour être sur que le champ soit NULL c'est sûrement ce qu'il y a de mieux à faire.

Merci rjuju !

#75 Re : PL/pgSQL » quote to NULL » 18/11/2014 14:08:05

Bonjour Rjuju.

Non, je ne peux pas toucher à mes données (ce serait trop simple ;-) )

et les champs ne sont pas vides, quand je regarde les tables via pgadmin ils contiennent des doubles quotes : '' , mais quand je fais un SELECT champ1, là j'ai un résultat vide.

Et moi ce que j'ai besoin de faire c'est filtrer tous les champs vides/NULL.

Pied de page des forums

Propulsé par FluxBB