create table item ( id bigint primary key, data jsonb ); CREATE INDEX idx_item_data ON item USING gin (data jsonb_path_ops); DO $$ DECLARE f TEXT; BEGIN FOR f IN SELECT pg_catalog.pg_ls_dir('/tmp/json') LOOP IF right(f, 5) = '.json' THEN BEGIN RAISE NOTICE 'Import du fichier : %', f; INSERT INTO item (id, data) VALUES ( replace(f, '.json','')::bigint, pg_read_file('/tmp/json/' || f)::jsonb ) ON CONFLICT (id) DO UPDATE SET data = EXCLUDED.data; EXCEPTION WHEN OTHERS THEN RAISE WARNING 'Erreur lors de l''import du fichier % : %', f, SQLERRM; END; END IF; END LOOP; END; $$ LANGUAGE plpgsql;