   CONSTRAINT pk_matching_tables PRIMARY KEY (id_matching_table)
 );
 
-CREATE TABLE matching_fields
-(
-  source_field text NOT NULL,
+id_matching_field serial NOT NULL,
+  source_field text,
+  source_default_value text, -- Valeur par défaut à insérer si la valeur attendue dans le champ de la table de destination n'existe pas dans la table source
   target_field text NOT NULL,
-  target_field_type text NOT NULL,
-  comments text,
+  target_field_type text,
+  field_comments text,
   id_matching_table integer NOT NULL,
-  CONSTRAINT pk_matching_fields PRIMARY KEY (source_field, target_field, id_matching_table)
+  CONSTRAINT pk_matching_fields PRIMARY KEY (id_matching_field)
 );
+COMMENT ON COLUMN gn_imports.matching_fields.source_default_value IS 'Valeur par défaut à insérer si la valeur attendue dans le champ de la table de destination n''existe pas dans la table source';
+
 
 CREATE TABLE matching_geoms
 (

        END LOOP;
    END IF;
    RETURN format('CREATE TABLE %I.%I FROM %L', sname, tname, csv_file);
end $$;

CREATE OR REPLACE FUNCTION fct_generate_import_query(
  mysource_table text, 
  mytarget_table text)  RETURNS text AS
--This function prépare a sql query to insert data from a table to another.
--Use the 3 matching tables in gn_imports schema.
--USAGE : gn_imports.fct_generate_import_query('table_source', 'table_cible');
$BODY$
DECLARE
    insertfield text; --prepared field to insert
    selectfield text; --prepared field in select clause

        END;
    END IF;
    --test si la table source et de destination existe et si un maping des champs a été préparé.
    insertfield = format('INSERT INTO %I.%I(%s',tsname, ttname, chr(10));
    selectfield = concat('SELECT ',chr(10));
    FOR r IN EXECUTE format('SELECT source_field, source_default_value, target_field, target_field_type 
			     FROM gn_imports.matching_fields f
			     JOIN gn_imports.matching_tables t ON t.id_matching_table = f.id_matching_table
			     WHERE t.source_schema = %L 
