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

#26 Re : Migration » bulk collect » 10/05/2012 15:08:00

Voilà à quoi ressemble globalement une des fonctions:
CREATE OR REPLACE FUNCTION DATA_LOAD_LIGNE_INSERT (status numeric, message VARCHAR) RETURNS SETOF VARCHAR AS $$

DECLARE
       C_INSERT CURSOR FOR SELECT tmp.COLUMN..... FROM ma_table_temp tmp; (avec les JOIN et WHERE qui vont bien
       
       COLUMNS numeric;
BEGIN
       OPEN C_INSERT;
    WHILE FOUND LOOP
        FETCH C_INSERT INTO COLUMNS
    IF FOUND THEN
       INSERT INTO ma_table_principale (COLUMN) VALUES COLUMNS;
   END LOOP;
   CLOSE C_INSERT;
   (quelques traitements sans grandes importances)
RETURN;
END;
$$ LANGUAGE 'plpgsql';

#27 Re : Migration » bulk collect » 10/05/2012 13:43:16

Effectivement je ne pense pas que ce soit possible hmm

#28 Re : Migration » bulk collect » 10/05/2012 13:20:36

Tout simplement est-ce qu'il y a une méthode ou autre pour que le traitement aille plus vite?

#29 Re : Migration » bulk collect » 09/05/2012 17:18:02

C'est bien ce que je pensais.
Je vais détailler un peu.
Je dois migrer une base de donnée oracle vers postgresql ( vous l'aurez compris ) , chaque journée des données sont enregistrées dans des tables temporaires , et chaque nuit un script sql ( que je dois traduire en pl/pgsql ) met à jour ces données en les enregistrant dans les tables principales , en faisant des update/insert. Les tables temporaires contiennent des milliers de lignes (pour ne pas dire parfois quelques centaines de milliers) et donc pour optimiser le traitement de nuit ils utilisent sous oracle une structure du genre OPEN CURSOR LOOP FETCH CURSOR BULK COLLECT INTO .......  LIMIT 1000 , pour faire les traitements par blocs de 1000. La première étape était de faire une traduction "bête" en pl/pgsql traitant ligne par ligne , mais cette méthode est beaucoup trop longue , vient la 2ème étape , l'optimisation pour accélérer les traitements , et là sa bloque , surtout s'il n'y a pas d'équivalent à bulk collect...
Je suis en version 8.2.12.

#30 Migration » bulk collect » 09/05/2012 15:59:48

karthus
Réponses : 44

Bonjour.
Quel serait l'équivalent du bulk collect d'oracle en postgresql?
Merci

Pied de page des forums

Propulsé par FluxBB