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 :
Ce que j'aimerais :
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
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 :
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
5try : blablabla except Error... : pass
Merci d'avance pour vos conseils !
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 ;
Partager