return: text lang: plpgsql parameters: p0: type: bigint name: i_import_id p1: type: text name: i_file src: | DECLARE _file_code TEXT; file TEXT; result TEXT; _i INT; BEGIN RAISE NOTICE '%' , 'Creation table de travail'; _file_code = upper((string_to_array(i_file,'.'))[array_upper(string_to_array(i_file,'.'),1)-1]); IF NOT EXISTS (SELECT * FROM pg_class WHERE relnamespace = pg_my_temp_schema() AND relname = 'w_mat2a_data') THEN DROP TABLE IF EXISTS w_mat2a_data; DROP SEQUENCE IF EXISTS w_mat2a_data_seq; CREATE TEMP SEQUENCE w_mat2a_data_seq INCREMENT BY 100; CREATE TEMP TABLE w_mat2a_data ( data text, sequence bigint DEFAULT nextval('w_mat2a_data_seq'::regclass), table_sequence numeric default 0, title_sequence numeric default 0, header_sequence numeric default 0, row_sequence numeric default 0, line_type text, columns text[] ); CREATE INDEX i_w_mat2a_data ON w_mat2a_data USING btree (sequence); END IF; TRUNCATE w_mat2a_data; RAISE NOTICE '%' , 'Copie des donnees'; file = replace(i_file,chr(92),'/'); BEGIN EXECUTE ('COPY w_mat2a_data (data) FROM ''' || file || ''' WITH DELIMITER AS E''' || chr(92) || '01'''); EXCEPTION WHEN others THEN RAISE NOTICE 'Erreur %' , 'Fichier ' || file || ' incompatible'; return 'KO. Fichier ' || file || ' incompatible'; END; RAISE NOTICE '%' , 'Analyse'; RAISE NOTICE '%' , 'Analyse. Suppression des lignes inutiles'; --
DELETE FROM w_mat2a_data USING ( SELECT MAX(CASE WHEN data ILIKE '' THEN sequence ELSE NULL END) AS sequence_min, MAX(CASE WHEN data ILIKE '' THEN sequence ELSE NULL END) AS sequence_max FROM w_mat2a_data WHERE data ILIKE '' OR data ILIKE '' ) subview WHERE sequence BETWEEN sequence_min AND sequence_max; --