Bonjour à tous,

J'ai un petit problème que je n'arrive pas à résoudre seule, j'espère que certains d'entre vous auront des idées sur ce sujet :

Le principe :
J'ai une base de données géométrique dans la quelle j'importe des coordonnées (x,y,z) et quelques autres données type nom, lieu, dates... Ces données sont importées via une interface sous python. Je lis un fichier Excel et importe ces données dans ma base.
Parfois, j'ai des cases vides dans mon tableau ou des données différentes de ce que j'ai en temps normal. Par exemple, au lieu d'une hauteur double précision "40.2" je vais avoir un texte "non calculé". Dans ces cas-là, j'ai naturellement une erreur de type puisque j'importe un texte dans un double precision.

Exemples de messages d'erreurs :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
1---
ProgrammingError: FEHLER:  Spalte „pt_y“ hat Typ integer, aber der Ausdruck hat Typ text
LINE 4:   SELECT data65, data3,data4,data5,data67
                               ^
HINT:  Sie müssen den Ausdruck umschreiben oder eine Typumwandlung vornehmen.
QUERY:  INSERT INTO point( pt_projnum , pt_x , pt_y ,  pt_z, pt_projname[
En francais : type du champ int et type de la donnée text. Types incompatibles 
2----
FEHLER: ungültige Eingabesyntax für ganze Zahl: „la“
SQL Status:22P02
En francais : Erreur de syntaxe, "la" invalide pour un nombre
Ce que j'aimerais :
J'aimerais pouvoir continuer l'importation des données, même si j'ai cette erreur et remplacer la valeur invalide par une case vide ou un code d'erreur.
Je ne suis pas habituée aux bases de donnée, j'aimerais faire quelque chose comme en programmation du type :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
try :
    blablabla
except Error... :
    pass
J'ai vu que des choses existaient, mais je n'ai aucune idée de comment cela fonctionne. Exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
CREATE OR REPLACE FUNCTION insert_false() RETURNS VOID AS $$
BEGIN 
	insert into point(pt_projnum, pt_y) values ('ex1','la'),('ex2', '2'),('ex3', '12');
EXCEPTION 
	WHEN invalid_text_representation THEN
	-- Do nothing.
END;
$$
LANGUAGE plpgsql;
 
select insert_false();
select * from point ;
Merci d'avance pour vos conseils !