change COPY command to dynamic due to column list

This commit is contained in:
Paul Trowbridge 2017-10-14 01:48:13 -04:00
parent a0b3173741
commit f6ab0e42f5

View File

@ -25,35 +25,36 @@ begin
----------------------------------------------------add create table verbage in front of column list-------------------------------------------------------- ----------------------------------------------------add create table verbage in front of column list--------------------------------------------------------
_t := format('CREATE TEMP TABLE csv_i (%s)', _t); _t := format('CREATE TEMP TABLE csv_i (%s, id SERIAL)', _t);
raise notice '%', _t; --RAISE NOTICE '%', _t;
raise notice '%', _c; --RAISE NOTICE '%', _c;
----------------------------------------------------build the table-----------------------------------------------------------------------------------------
DROP TABLE IF EXISTS csv_i; DROP TABLE IF EXISTS csv_i;
EXECUTE _t; EXECUTE _t;
ALTER TABLE csv_i ADD COLUMN id SERIAL; ----------------------------------------------------do the insert-------------------------------------------------------------------------------------------
--the column list needs to be dynamic forcing this whole line to be dynamic --the column list needs to be dynamic forcing this whole line to be dynamic
COPY csv_i ("Trans. Date","Post Date","Description","Amount","Category")FROM 'C:\Users\fleet\downloads\dc.csv' WITH (HEADER TRUE,DELIMITER ',', FORMAT CSV, ENCODING 'SQL_ASCII',QUOTE '"'); _t := format('COPY csv_i (%s) FROM ''C:\Users\fleet\downloads\dc.csv'' WITH (HEADER TRUE,DELIMITER '','', FORMAT CSV, ENCODING ''SQL_ASCII'',QUOTE ''"'');',_c);
--RAISE NOTICE '%', _t;
EXECUTE _t;
end end
$$; $$;
--SELECT * FROM csv_i; --this needs to aggregate on id sequence
SELECT SELECT
jsonb_build_object( jsonb_build_object(
(ae.e::text[])[1], --the key name (ae.e::text[])[1], --the key name
(row_to_json(i)::jsonb) #> ae.e::text[] --get the target value from the key from the csv row that has been converted to json (row_to_json(i)::jsonb) #> ae.e::text[] --get the target value from the key from the csv row that has been converted to json
) json_key, ) json_key,
srce, srce,
ae.rn ae.rn,
id
FROM FROM
csv_i i csv_i i
INNER JOIN tps.srce s ON INNER JOIN tps.srce s ON