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

#126 Re : PL/pgSQL » Syntax error sur "CURSOR" » 21/07/2010 15:06:51

flo

Il est même bien faux l'exemple (le FOR n'est pas bon non plus). Je l'ai testé et réécrit, mais là je peux pas poster de patch (suis au boulot sad ).

Tu l'as fait, Marc?

#127 Re : PL/pgSQL » messagebox dans un trigger » 21/07/2010 14:18:36

flo

Vous pourriez peut-être aller lire cette page de la documentation pour vous éclaircir les idées :
http://docs.postgresql.fr/9.0/tutorial-arch.html

#128 Re : Général » Comparatif SGBD » 20/07/2010 18:19:27

flo

Oui, Jim (décidément...). Corrigé smile

#130 Re : Général » Comparatif SGBD » 20/07/2010 17:44:42

flo

Si c'est un comparatif de fonctionnalités qui t'intéresse, il y a toujours celui de Wikipédia :

http://en.wikipedia.org/wiki/Comparison … nt_systems

Sinon, si c'est pour trouver des arguments en faveur de PostgreSQL, sais-tu à quel(s) type(s) d'arguments ils seront sensibles (coût global, facilité d'administration, simplicité de développement, performances, fonctionnalités, facilité de migration à partir de l'ancienne base, support, "références"... ???)

#131 Re : Général » Type de données CHARACTER » 01/07/2010 17:04:54

flo

Ah oui, en fait comme j'avais toujours vu récupérer les valeurs dans un programme puis fait les opérations sur les chaînes, je n'avais pas pensé que cela pouvait être différent si on le faisait dans le SQL directement.

#132 Re : Général » Type de données CHARACTER » 01/07/2010 15:29:15

flo

Qu'est-ce que tu veux dire par "non significatif"?

J'ai fait un test :

CREATE TABLE testchar
(
  id serial NOT NULL,
  truc character(5)
)
WITH (
  OIDS=FALSE
);

puis j'ai inséré des données, et notamment :

insert into testchar (truc) values ('ba   ');


tests=# select '**' || truc || '**' from testchar;

?column?
-----------
**a**
**ab**
**abc**
**abcd**
**abcde**
** bcde**
**ba**
(7 lignes)

L'espace de fin est supprimé aussi, alors que je l'avais bien mis.

C'est curieux, je n'avais jamais remarqué cela. Est-ce que c'est spécifique à PostgreSQL?

#133 Re : Général » importer fichier csv » 17/06/2010 15:38:38

flo

Mais beaucoup de gens pensent que le délimiteur par défaut est un point-virgule, parce que Excel exporte ses données avec un point-virgule comme séparateur. On n'a  même pas le choix (en tout cas avec la version 2003).
Donc attention à ne pas se faire avoir par le séparateur si le but est d'importer des données provenant d'Excel, ou de programmes conçus par des gens qui pensent que le séparateur est le point-virgule. Je me suis déjà fait avoir sad

#134 Re : Général » Duplicate Key sur table vide » 14/06/2010 09:49:18

flo

Supprimer une clé primaire est une très mauvaise idée. Mieux vaudrait essayer de comprendre ce qui n'a pas fonctionné dans ce que vous avez fait.
Mais sans la suite complète et précise des opérations que vous avez effectuées il est difficile de vous aider.

#135 Re : Général » [Débutant] Réutilisation de numéros de séquence » 10/06/2010 14:35:44

flo

Bonjour,

Pourriez-vous copier ici l'ensemble du fichier ou des ordres passés, en un seul bloc?

#136 Re : Général » Duplicate Key sur table vide » 10/06/2010 11:40:50

flo

Au fait, col1 est le  nom de la table, ou de la colonne ?
Dans le premier message, il est question d'une colonne, et pourtant l'ordre SQL écrit sur ce forum est
DELETE from col1
et non
DELETE from nomTable
Or si c'est le nom de la colonne il devrait y avoir un message d'erreur...

#137 Re : Général » execution d'un fichier sql sous pgadmin » 10/06/2010 10:41:43

flo

Je ne pense pas qu'il soit judicieux de faire cela sous pgadmin: exécuter un script de 600 000 lignes, ce n'est pas franchement interactif. Il vaut mieux utiliser psql pour cela.

Je m'interroge tout de même sur les 600 000 mises à jour : cela fait tout de même beaucoup si c'est dans la même transaction...

Quelqu'un a un avis éclairé sur la capacité de Postgres à gérer une telle transaction?

#138 Re : Général » Duplicate Key sur table vide » 10/06/2010 10:32:42

flo

Tu as commité la transaction? (celle qui a fait la suppression)

#139 Re : Général » expressions regullieres » 03/06/2010 16:30:33

flo

Et comme  ceci :

select * from  pci.dep13_parcelle_pci  where id_parc ~  E'\\d{5}[A-Z]{1,2}\\d{4}' ;

?

#140 Re : Général » expressions regullieres » 03/06/2010 12:07:20

flo

Tu veux faire quoi exactement? Sélectionner les lignes d'une table matchant l'expression?
En supposant que c'est cela, il faut utiliser les opérateurs.

Par exemple :

select * from teste where data ~ 'tr.*';

te renvoie toutes les lignes telles que la colonne "data" contient 'tr'.

Tu pourras adapter toi-même en choisissant le bon opérateur si c'est autre chose que tu cherches (lignes ne respectant pas le motif, non-prise en compte de la casse.) C'est dans la doc.

Si cela ne répond pas à ta question, merci de préciser.

#141 Re : Général » expressions regullieres » 03/06/2010 11:53:28

flo

Salut,
Faut que tu regardes dans la doc, ici :
http://docs.postgresqlfr.org/8.4/functi … ching.html
au paragraphe "expressions rationnelles POSIX".
Je pense que c'est ce que tu cherches.

#142 Général » Référence » 31/05/2010 12:31:22

flo
Réponses : 1

Quelqu'un aurait-il un lien vers des références de migrations d'Oracle vers Postgresql? (présentations, retours d'expérience)
Je n'ai pas trouvé mon bonheur ici :
http://www.postgresql.org/about/casestudies/

ni dans le wiki.

#143 Re : Général » Formation PostgreSQL pour un Ingénieur Décisionnel ? » 01/05/2010 08:20:03

flo

Pour compléter ce que dit Guillaume (je suis nantaise)
Plusieurs grandes sociétés de formation ont des agences à Nantes. Mais mis à part pour les formations fréquemment demandés, les formations en province sont organisées à la demande. C'est-à-dire qu'ils s'efforcent de regrouper, si possible, des stagiaires de différentes entreprises pour organiser des formations. Sinon il faut aller sur Paris.
Il y a aussi des sociétés nantaises, mais... comment dire? Attention à la qualité. J'ai eu de très mauvais retours de certaines. Il y a des sociétés où les formateurs prennent connaissance du sujet juste avant de donner la formation. Alors pour une formation DBA....

Bref, à mon avis, mieux vaut faire l'effort d'un déplacement de quelques jours (effort pour toi ou effort financier pour ta boite), plutôt que de payer une formation de mauvaise qualité (celles où tu te dis que tu aurais fait aussi bien tout seul avec un bouquin ou la doc). D'ailleurs les mauvaises formations sont chères également.

#144 Re : Général » ça neretourne rien » 23/04/2010 14:21:11

flo

Tu l'exécutes comment, la fonction?

#145 Re : PL/pgSQL » [RESOLU] Utilisation des fonctions fenêtrées » 23/04/2010 11:25:30

flo

C'était peut-être pas très clair :  certainement que cela fonctionne avec la table presta à la place de la table intervention. Mais il  faut évidemment laisser la clause where, sinon la requête est fausse.

L'autre post était plus une question aux autres membres du forum, pour la "culture", parce que je me demandais s'il n'y avait pas moyen de faire mieux.
Évidemment si la requête avec presta est suffisamment rapide, laissez-la telle quelle.

Par contre je vous conseille tout de même de vous renseigner sur les opérations de maintenance (analyse) au moins en production. Et si vous avez des tests à faire, sur l'environnement où vous faites les tests.

#146 Re : PL/pgSQL » [RESOLU] Utilisation des fonctions fenêtrées » 22/04/2010 11:48:01

flo

Analyse : je pense que Guillaume parlait de la commande analyse, qui sert à collecter les statistiques. Si les statistiques sont trop loin de la réalité, le planificateur se plante.
http://docs.postgresqlfr.org/8.1/sql-analyze.html

Requête :
Vous avez supprimé la clause where de la requête, donc elle ramène tous les techniciens.

#147 Re : Général » Dblink entre Oracle et Postgresql » 22/04/2010 10:12:37

flo

Au fait, merci à tous pour vos conseils. J'ai finalement suivi le conseil de Marc (ETL), et j'ai bien fait je pense. Il y avait une soixantaine de tables à copier, avec des différences de schéma (des colonnes à supprimer), et des conversions de type. On avait oublié de me dire que certaines colonnes des tables de départ ne devaient pas être prises en compte.

J'ai utilisé Pentaho Data Integration (Kettle), et cela m'a pris environ 1 jour (installation, mise en place, test...). Sinon j'aurais fait avec un script bash + une procédure PL/SQL mais je pense que j'y serai encore. En effet il   m'aurait fallu écrire toutes les requêtes d'extraction en vérifiant la liste des champs pour chaque table dans Oracle et dans Postgres, alors qu'avec Kettle on a directement la correspondance entre les colonnes de la table de départ et celle d'arrivée. Je ne sais pas ce que cela aurait donné pour l'encodage...

Sinon, juste une question au cas où quelqu'un connaitrait la réponse : quand on utilise COPY pour charger une table, comment doit être représentée la valeur des booléens? (j'ai pas vu cette info sur la page de doc de la commande COPY)

#148 Re : PL/pgSQL » [RESOLU] Utilisation des fonctions fenêtrées » 21/04/2010 22:57:13

flo

Je pense à autre chose, mais je n'en suis pas sûre : dans la clause where, il y a la condition :

(nb_inter_sav IS NOT NULL OR nb_inter_ig IS NOT NULL) AND (change_box_ig IS NOT NULL OR change_box_sav IS NOT NULL)

autrement dit, si on renomme les sous-requêtes en A, B, C, D (j'ai la flemme de recopier...) :

(A ou B ) et (C ou D)

On ne pourrait pas remplacer la clause where par des jointures de type FULL OUTER JOIN entre A et B  , et entre C et D, et une INNER JOIN entre le résultat?
Je n'ai pas l'habitude du FULL OUTER JOIN, mais il me semble que c'est l'équivalent d'un OU logique?

Si je ne me trompe pas, on peut donc de cette manière se passer de la première table de la requête.

Qu'en pensez-vous?

#149 Re : PL/pgSQL » [RESOLU] Utilisation des fonctions fenêtrées » 21/04/2010 22:44:57

flo

Sinon, j'ai quand même quelque chose sur la requête : au vu de ce que vous dites, la table intervention qui est jointurée avec les sous-requêtes sert à garantir qu'on puisse avoir toutes les possibilités de la clause Where . En ce sens, faire travailler postgres sur toute la table intervention ne sert à rien, c'est seulement int_refinst qui nous intéresse.

Or ant_refinst est probablement la clé primaire d'une autre table (la table des techniciens?). Je serais vous, je remplacerait sans hésiter la table intervention qui apparait en premier dans la requête par cette table : elle est probablement beaucoup plus petite, et elle évite le DISTINCT (un gros tri en moins...) Si la table contient des identifiants d'autres personnes (des personnes qui ne sont pas techniciens) je tenterait le coup tout de même, en ajoutant le critère qui va bien.


Ca n'empêche pas de regarder si l'ANALYZE a été fait récemment. Au fait, vous travaillez toujours sur l'environnement de développement? On (les développeurs) a souvent tendance à oublier les opérations de maintenance sur les bases de test et de développement...

Au passage, une question pour Guillaume : je suppose que sa table "bouge" beaucoup (création de nouvelles lignes, voire suppressions). Si c'est le cas, il faudrait qu'il s'assure qu'il y a un ANALYZE régulier fait sur la base de prod (voire celle de test) ?

#150 Re : PL/pgSQL » [RESOLU] Utilisation des fonctions fenêtrées » 21/04/2010 16:42:24

flo

Il faut juste lancer la requête avec un explain analyse pour voir s'il est utilisé.

Pied de page des forums

Propulsé par FluxBB