From ac07f561b043c77724bc7f250cbb8fb90bac5a89 Mon Sep 17 00:00:00 2001 From: Paul Trowbridge Date: Tue, 3 Oct 2017 01:47:30 -0400 Subject: [PATCH 01/13] build macro for creating record --- build_json.xlsx | Bin 34879 -> 43890 bytes new_format.pgsql | 1 + 2 files changed, 1 insertion(+) diff --git a/build_json.xlsx b/build_json.xlsx index 858f7c2bd221a0e488640532467e8efdbee92e60..bee251a8d8f32db22cf0a291d95e76a9a75c2216 100644 GIT binary patch delta 35803 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 H())h^QL1Cg diff --git a/new_format.pgsql b/new_format.pgsql index 9cd33fd..a0d3c8c 100644 --- a/new_format.pgsql +++ b/new_format.pgsql @@ -1,3 +1,4 @@ + WITH j AS ( SELECT $${"vendor":"Acme","date":"9/19/2017","instrument":"Discover Card","module":"MJE_O","offset":"dcard","total":127.66,"item":[{"item":"sun chips","amt":3.29,"account":"food","reason":"chips","vendor":"Acme","date":"9/19/2017","instrument":"Discover Card"},{"item":"cheetos paws","amt":3.69,"account":"food","reason":"chips","vendor":"Acme","date":"9/19/2017","instrument":"Discover Card"},{"item":"jif","amt":4.99,"account":"food","reason":"peanut butter","vendor":"Acme","date":"9/19/2017","instrument":"Discover Card"},{"item":"jif whips","amt":3.99,"account":"food","reason":"peanut butter","vendor":"Acme","date":"9/19/2017","instrument":"Discover Card"},{"item":"jif","amt":4.99,"account":"food","reason":"peanut butter","vendor":"Acme","date":"9/19/2017","instrument":"Discover Card"},{"item":"goya chipotle pepp","amt":2.29,"account":"food","reason":"chili peppers","vendor":"Acme","date":"9/19/2017","instrument":"Discover Card"},{"item":"quick oats","amt":4.69,"account":"food","reason":"oats","vendor":"Acme","date":"9/19/2017","instrument":"Discover Card"},{"item":"quick oats","amt":4.69,"account":"food","reason":"oats","vendor":"Acme","date":"9/19/2017","instrument":"Discover Card"},{"item":"sara lee artesano","amt":2.99,"account":"food","reason":"bread","vendor":"Acme","date":"9/19/2017","instrument":"Discover Card"},{"item":"dan lgt yog","amt":3.29,"account":"food","reason":"yogurt","vendor":"Acme","date":"9/19/2017","instrument":"Discover Card"},{"item":"bananas","amt":3.7,"account":"food","reason":"bananas","qty":7.11,"uom":"lbs","vendor":"Acme","date":"9/19/2017","instrument":"Discover Card"},{"item":"yellow onions","amt":2.99,"account":"food","reason":"onions","qty":3,"uom":"lbs","vendor":"Acme","date":"9/19/2017","instrument":"Discover Card"},{"item":"orange peppers","amt":4.11,"account":"food","reason":"peppers","qty":1.03,"uom":"lbs","vendor":"Acme","date":"9/19/2017","instrument":"Discover Card"},{"item":"asparagus","amt":5.14,"account":"food","reason":"asparagus","vendor":"Acme","date":"9/19/2017","instrument":"Discover Card"},{"item":"broccoli","amt":2.99,"account":"food","reason":"broccoli","vendor":"Acme","date":"9/19/2017","instrument":"Discover Card"},{"item":"hn fat free frank","amt":5.49,"account":"food","reason":"hot dogs","vendor":"Acme","date":"9/19/2017","instrument":"Discover Card"},{"item":"hn fat free frank","amt":5.49,"account":"food","reason":"hot dogs","vendor":"Acme","date":"9/19/2017","instrument":"Discover Card"},{"item":"butterscotch morsels","amt":3.49,"account":"food","reason":"chocolate chips","vendor":"Acme","date":"9/19/2017","instrument":"Discover Card"},{"item":"chocolate chips","amt":3.49,"account":"food","reason":"chocolate chips","vendor":"Acme","date":"9/19/2017","instrument":"Discover Card"},{"item":"chocolate chips","amt":3.49,"account":"food","reason":"chocolate chips","vendor":"Acme","date":"9/19/2017","instrument":"Discover Card"},{"item":"chocolate chips","amt":3.49,"account":"food","reason":"chocolate chips","vendor":"Acme","date":"9/19/2017","instrument":"Discover Card"},{"item":"chocolate chips","amt":3.49,"account":"food","reason":"chocolate chips","vendor":"Acme","date":"9/19/2017","instrument":"Discover Card"},{"item":"seedless grapes","amt":11.45,"account":"food","reason":"grapes","qty":2.87,"uom":"lbs","vendor":"Acme","date":"9/19/2017","instrument":"Discover Card"},{"item":"honecrisp apples","amt":14.76,"account":"food","reason":"apples","qty":3.7,"uom":"lbs","vendor":"Acme","date":"9/19/2017","instrument":"Discover Card"},{"item":"garlic expressions","amt":4.99,"account":"food","reason":"salad dressing","vendor":"Acme","date":"9/19/2017","instrument":"Discover Card"},{"item":"olivegarden dressing","amt":3.49,"account":"food","reason":"salad dressing","vendor":"Acme","date":"9/19/2017","instrument":"Discover Card"},{"item":"garlic expressions","amt":4.99,"account":"food","reason":"salad dressing","vendor":"Acme","date":"9/19/2017","instrument":"Discover Card"},{"item":"thomas cinamon bagels","amt":4.69,"account":"food","reason":"bagels","vendor":"Acme","date":"9/19/2017","instrument":"Discover Card"},{"item":"stawberries","amt":1.25,"account":"food","reason":"strawberries","vendor":"Acme","date":"9/19/2017","instrument":"Discover Card"},{"item":"stawberries","amt":1.25,"account":"food","reason":"strawberries","vendor":"Acme","date":"9/19/2017","instrument":"Discover Card"},{"item":"provolone cheese","amt":6.99,"account":"food","reason":"cheese","vendor":"Acme","date":"9/19/2017","instrument":"Discover Card"},{"item":"lemon juice","amt":1.99,"account":"food","reason":"lemon juice","vendor":"Acme","date":"9/19/2017","instrument":"Discover Card"},{"item":"cucumbers","amt":1.99,"account":"food","reason":"cucumbers","vendor":"Acme","date":"9/19/2017","instrument":"Discover Card"},{"item":"cucumbers","amt":1.99,"account":"food","reason":"cucumbers","vendor":"Acme","date":"9/19/2017","instrument":"Discover Card"},{"item":"distilled water","amt":"0.89","account":"food","reason":"water","vendor":"Acme","date":"9/19/2017","instrument":"Discover Card"},{"item":"distilled water","amt":"0.89","account":"food","reason":"water","vendor":"Acme","date":"9/19/2017","instrument":"Discover Card"},{"item":"distilled water","amt":"0.89","account":"food","reason":"water","vendor":"Acme","date":"9/19/2017","instrument":"Discover Card"},{"item":"distilled water","amt":"0.89","account":"food","reason":"water","vendor":"Acme","date":"9/19/2017","instrument":"Discover Card"},{"item":"distilled water","amt":"0.89","account":"food","reason":"water","vendor":"Acme","date":"9/19/2017","instrument":"Discover Card"},{"item":"distilled water","amt":"0.89","account":"food","reason":"water","vendor":"Acme","date":"9/19/2017","instrument":"Discover Card"},{"item":"discount","amt":-1.7,"account":"food","reason":"chips","vendor":"Acme","date":"9/19/2017","instrument":"Discover Card"},{"item":"discount","amt":-0.99,"account":"food","reason":"broccoli","vendor":"Acme","date":"9/19/2017","instrument":"Discover Card"},{"item":"discount","amt":-1.5,"account":"food","reason":"chocolate chips","vendor":"Acme","date":"9/19/2017","instrument":"Discover Card"},{"item":"discount","amt":-1.5,"account":"food","reason":"chocolate chips","vendor":"Acme","date":"9/19/2017","instrument":"Discover Card"},{"item":"discount","amt":-1.5,"account":"food","reason":"chocolate chips","vendor":"Acme","date":"9/19/2017","instrument":"Discover Card"},{"item":"discount","amt":-1.5,"account":"food","reason":"chocolate chips","vendor":"Acme","date":"9/19/2017","instrument":"Discover Card"},{"item":"discount","amt":-1.5,"account":"food","reason":"chocolate chips","vendor":"Acme","date":"9/19/2017","instrument":"Discover Card"},{"item":"discount","amt":-8.03,"account":"food","reason":"grapes","qty":2.87,"uom":"lbs","vendor":"Acme","date":"9/19/2017","instrument":"Discover Card"},{"item":"discount","amt":-5.55,"account":"food","reason":"apples","qty":3.7,"uom":"lbs","vendor":"Acme","date":"9/19/2017","instrument":"Discover Card"}]}$$::JSONB as r From 8c0c37314e7e8c3b4bf05cf0c43beed04a7d424c Mon Sep 17 00:00:00 2001 From: Paul Trowbridge Date: Thu, 5 Oct 2017 23:20:29 -0400 Subject: [PATCH 02/13] updates to receipts --- build_json.xlsx | Bin 43890 -> 44281 bytes ~$build_json.xlsx | Bin 165 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 ~$build_json.xlsx diff --git a/build_json.xlsx b/build_json.xlsx index bee251a8d8f32db22cf0a291d95e76a9a75c2216..4078be911b2d06bf4e0e6042e0c0066da732c975 100644 GIT binary patch delta 8403 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 delta 8002 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 Date: Sat, 7 Oct 2017 15:45:48 -0400 Subject: [PATCH 03/13] add discover transactions --- build_json.xlsx | Bin 44281 -> 44693 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/build_json.xlsx b/build_json.xlsx index 4078be911b2d06bf4e0e6042e0c0066da732c975..0c7022c46c831be8a0cd45e555f8a45e4c1003bc 100644 GIT binary patch delta 9231 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 Zxe(Ag4+1F{1b)efOqEk1I2FC#^FKQ2PGSH6 delta 8805 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 GpZ@|0@Pn8D From 39d734bb419499cd7c740be2149e191f6b006475 Mon Sep 17 00:00:00 2001 From: Paul Trowbridge Date: Wed, 11 Oct 2017 00:17:21 -0400 Subject: [PATCH 04/13] unwrap the newly created json arrangement and dynamically create a temp table --- srce.pgsql | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/srce.pgsql b/srce.pgsql index cec92cd..0edffb9 100644 --- a/srce.pgsql +++ b/srce.pgsql @@ -1,3 +1,4 @@ +/* SELECT jsonb_pretty( $$ @@ -39,4 +40,35 @@ $$ } } $$::jsonb -) \ No newline at end of file +) +*/ + +DO $$ + +declare _t text; + +begin + + SELECT + string_agg(quote_ident(prs.key)||' '||prs.type,',') + INTO + _t + FROM + TPS.srce + --unwrap the schema definition array + LEFT JOIN LATERAL jsonb_populate_recordset(null::tps.srce_defn_schema, defn->'schema') prs ON TRUE + GROUP BY + srce; + + raise notice '%', _t; + _t := format('CREATE TEMP TABLE csv_i (%s)', _t); + raise notice '%', _t; + + DROP TABLE IF EXISTS csv_i; + + EXECUTE _t; + +end +$$; + +SELECT * FROM csv_i; \ No newline at end of file From 68d00a88d10cb94b52a0ef12cf58a6d78c5a0f50 Mon Sep 17 00:00:00 2001 From: Paul Trowbridge Date: Wed, 11 Oct 2017 00:29:25 -0400 Subject: [PATCH 05/13] add backup batch file --- ubm_backup.cmd | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 ubm_backup.cmd diff --git a/ubm_backup.cmd b/ubm_backup.cmd new file mode 100644 index 0000000..2930ecb --- /dev/null +++ b/ubm_backup.cmd @@ -0,0 +1,2 @@ +C:\PostgreSQL\pg10\bin\pg_dump-h localhost -p 5433 -U ptrowbridge -d ubm -s -O -F p -f "C:\users\fleet\Documnets\tps_etl\ubm_schema.backup" +C:\PostgreSQL\pg10\bin\pg_dump-h localhost -p 5433 -U ptrowbridge -d ubm -a -O -F p -f "C:\users\fleet\Documnets\tps_etl\ubm_data.backup" \ No newline at end of file From ad5a178873602fe1b1361fb4f92b74bddca565d1 Mon Sep 17 00:00:00 2001 From: Paul Trowbridge Date: Wed, 11 Oct 2017 00:29:38 -0400 Subject: [PATCH 06/13] formatting --- srce.pgsql | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/srce.pgsql b/srce.pgsql index 0edffb9..8af1773 100644 --- a/srce.pgsql +++ b/srce.pgsql @@ -49,6 +49,8 @@ declare _t text; begin +----------------------------------------------------build the column list of the temp table---------------------------------------------------------------- + SELECT string_agg(quote_ident(prs.key)||' '||prs.type,',') INTO @@ -60,10 +62,14 @@ begin GROUP BY srce; - raise notice '%', _t; +----------------------------------------------------add create table verbage in front of column list-------------------------------------------------------- + _t := format('CREATE TEMP TABLE csv_i (%s)', _t); - raise notice '%', _t; + --raise notice '%', _t; + +----------------------------------------------------build the table----------------------------------------------------------------------------------------- + DROP TABLE IF EXISTS csv_i; EXECUTE _t; From 2afc229c6b34d81f1501d3f6f4dbe05ae65600a5 Mon Sep 17 00:00:00 2001 From: Paul Trowbridge Date: Wed, 11 Oct 2017 00:46:15 -0400 Subject: [PATCH 07/13] backup files --- ubm.backup | 100 ---------------------------- ubm_backup.cmd | 4 +- ubm_data.backup | 47 ++++++++++++++ ubm_schema.backup | 162 ++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 211 insertions(+), 102 deletions(-) delete mode 100644 ubm.backup create mode 100644 ubm_data.backup create mode 100644 ubm_schema.backup diff --git a/ubm.backup b/ubm.backup deleted file mode 100644 index 2c02768..0000000 --- a/ubm.backup +++ /dev/null @@ -1,100 +0,0 @@ --- --- PostgreSQL database dump --- - --- Dumped from database version 10beta4 --- Dumped by pg_dump version 10beta4 - -SET statement_timeout = 0; -SET lock_timeout = 0; -SET idle_in_transaction_session_timeout = 0; -SET client_encoding = 'WIN1252'; -SET standard_conforming_strings = on; -SET check_function_bodies = false; -SET client_min_messages = warning; -SET row_security = off; - --- --- Name: evt; Type: SCHEMA; Schema: -; Owner: ptrowbridge --- - -CREATE SCHEMA evt; - - -ALTER SCHEMA evt OWNER TO ptrowbridge; - --- --- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: --- - -CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; - - --- --- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: --- - -COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; - - -SET search_path = evt, pg_catalog; - -SET default_tablespace = ''; - -SET default_with_oids = false; - --- --- Name: log; Type: TABLE; Schema: evt; Owner: ptrowbridge --- - -CREATE TABLE log ( - id integer NOT NULL, - rec jsonb, - module text -); - - -ALTER TABLE log OWNER TO ptrowbridge; - --- --- Name: log_id_seq; Type: SEQUENCE; Schema: evt; Owner: ptrowbridge --- - -ALTER TABLE log ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY ( - SEQUENCE NAME log_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1 -); - - --- --- Data for Name: log; Type: TABLE DATA; Schema: evt; Owner: ptrowbridge --- - -COPY log (id, rec, module) FROM stdin; -1 {"date": "2017-08-20", "item": [{"item": "Green Chili", "amount": 1.49, "account": "food"}, {"item": "Black Beans", "amount": 1.6, "account": "food"}, {"item": "Distilled Water", "amount": 7.12, "account": "food"}, {"item": "Fruit Preservative", "amount": 3.99, "account": "food"}, {"item": "Watch Battery", "amount": 3.79, "account": "stuff"}, {"item": "Sales Tax", "amount": "0.26", "account": "taxes"}, {"item": "Green Chili", "amount": -1.49, "account": "dcard"}, {"item": "Black Beans", "amount": -1.6, "account": "dcard"}, {"item": "Distilled Water", "amount": -7.12, "account": "dcard"}, {"item": "Fruit Preservative", "amount": -3.99, "account": "dcard"}, {"item": "Watch Battery", "amount": -3.79, "account": "dcard"}, {"item": "Sales Tax", "amount": -0.26, "account": "dcard"}], "vendor": "Drug Mart", "instrument": "Discover Card"} MJE -\. - - --- --- Name: log_id_seq; Type: SEQUENCE SET; Schema: evt; Owner: ptrowbridge --- - -SELECT pg_catalog.setval('log_id_seq', 1, true); - - --- --- Name: log log_pkey; Type: CONSTRAINT; Schema: evt; Owner: ptrowbridge --- - -ALTER TABLE ONLY log - ADD CONSTRAINT log_pkey PRIMARY KEY (id); - - --- --- PostgreSQL database dump complete --- - diff --git a/ubm_backup.cmd b/ubm_backup.cmd index 2930ecb..52e2350 100644 --- a/ubm_backup.cmd +++ b/ubm_backup.cmd @@ -1,2 +1,2 @@ -C:\PostgreSQL\pg10\bin\pg_dump-h localhost -p 5433 -U ptrowbridge -d ubm -s -O -F p -f "C:\users\fleet\Documnets\tps_etl\ubm_schema.backup" -C:\PostgreSQL\pg10\bin\pg_dump-h localhost -p 5433 -U ptrowbridge -d ubm -a -O -F p -f "C:\users\fleet\Documnets\tps_etl\ubm_data.backup" \ No newline at end of file +"C:\PostgreSQL\pg10\bin\pg_dump" -h localhost -p 5433 -U ptrowbridge -d ubm -c -s -O -F p -f "C:\users\fleet\Documents\tps_etl\ubm_schema.backup" +"C:\PostgreSQL\pg10\bin\pg_dump" -h localhost -p 5433 -U ptrowbridge -d ubm --column-inserts -a -O -F p -f "C:\users\fleet\Documents\tps_etl\ubm_data.backup" \ No newline at end of file diff --git a/ubm_data.backup b/ubm_data.backup new file mode 100644 index 0000000..094d8e9 --- /dev/null +++ b/ubm_data.backup @@ -0,0 +1,47 @@ +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 10beta4 +-- Dumped by pg_dump version 10beta4 + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET idle_in_transaction_session_timeout = 0; +SET client_encoding = 'WIN1252'; +SET standard_conforming_strings = on; +SET check_function_bodies = false; +SET client_min_messages = warning; +SET row_security = off; + +SET search_path = evt, pg_catalog; + +-- +-- Data for Name: log; Type: TABLE DATA; Schema: evt; Owner: - +-- + +INSERT INTO log (id, rec) VALUES (1, '{"date": "2017-08-20", "item": [{"item": "Green Chili", "amount": 1.49, "account": "food"}, {"item": "Black Beans", "amount": 1.6, "account": "food"}, {"item": "Distilled Water", "amount": 7.12, "account": "food"}, {"item": "Fruit Preservative", "amount": 3.99, "account": "food"}, {"item": "Watch Battery", "amount": 3.79, "account": "stuff"}, {"item": "Sales Tax", "amount": "0.26", "account": "taxes"}, {"item": "Green Chili", "amount": -1.49, "account": "dcard"}, {"item": "Black Beans", "amount": -1.6, "account": "dcard"}, {"item": "Distilled Water", "amount": -7.12, "account": "dcard"}, {"item": "Fruit Preservative", "amount": -3.99, "account": "dcard"}, {"item": "Watch Battery", "amount": -3.79, "account": "dcard"}, {"item": "Sales Tax", "amount": -0.26, "account": "dcard"}], "vendor": "Drug Mart", "instrument": "Discover Card"}'); + + +SET search_path = tps, pg_catalog; + +-- +-- Data for Name: srce; Type: TABLE DATA; Schema: tps; Owner: - +-- + +INSERT INTO srce (srce, defn) VALUES ('PNCC', '{"name": "PNCC", "type": "csv", "schema": [{"key": "AsOfDate", "type": "date"}, {"key": "BankId", "type": "text"}, {"key": "AccountNumber", "type": "text"}, {"key": "AccountName", "type": "text"}, {"key": "BaiControl", "type": "text"}, {"key": "Currency", "type": "text"}, {"key": "Transaction", "type": "text"}, {"key": "Reference", "type": "text"}, {"key": "Amount", "type": "text"}, {"key": "Description", "type": "text"}, {"key": "AdditionalRemittance", "type": "text"}], "unique_constraint": {"type": "range", "fields": ["{AsOfDate}"]}}'); + + +SET search_path = evt, pg_catalog; + +-- +-- Name: log_id_seq; Type: SEQUENCE SET; Schema: evt; Owner: - +-- + +SELECT pg_catalog.setval('log_id_seq', 1, true); + + +-- +-- PostgreSQL database dump complete +-- + diff --git a/ubm_schema.backup b/ubm_schema.backup new file mode 100644 index 0000000..e640e3c --- /dev/null +++ b/ubm_schema.backup @@ -0,0 +1,162 @@ +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 10beta4 +-- Dumped by pg_dump version 10beta4 + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET idle_in_transaction_session_timeout = 0; +SET client_encoding = 'WIN1252'; +SET standard_conforming_strings = on; +SET check_function_bodies = false; +SET client_min_messages = warning; +SET row_security = off; + +SET search_path = tps, pg_catalog; + +ALTER TABLE ONLY tps.srce DROP CONSTRAINT srce_pkey; +SET search_path = evt, pg_catalog; + +ALTER TABLE ONLY evt.log DROP CONSTRAINT log_pkey; +SET search_path = tps, pg_catalog; + +DROP TABLE tps.srce; +SET search_path = evt, pg_catalog; + +DROP TABLE evt.log; +SET search_path = tps, pg_catalog; + +DROP TYPE tps.srce_defn_schema; +DROP EXTENSION plpgsql; +DROP SCHEMA tps; +DROP SCHEMA public; +DROP SCHEMA evt; +-- +-- Name: evt; Type: SCHEMA; Schema: -; Owner: - +-- + +CREATE SCHEMA evt; + + +-- +-- Name: public; Type: SCHEMA; Schema: -; Owner: - +-- + +CREATE SCHEMA public; + + +-- +-- Name: SCHEMA public; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON SCHEMA public IS 'standard public schema'; + + +-- +-- Name: tps; Type: SCHEMA; Schema: -; Owner: - +-- + +CREATE SCHEMA tps; + + +-- +-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: - +-- + +CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; + + +-- +-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; + + +SET search_path = tps, pg_catalog; + +-- +-- Name: srce_defn_schema; Type: TYPE; Schema: tps; Owner: - +-- + +CREATE TYPE srce_defn_schema AS ( + key text, + type text +); + + +SET search_path = evt, pg_catalog; + +SET default_tablespace = ''; + +SET default_with_oids = false; + +-- +-- Name: log; Type: TABLE; Schema: evt; Owner: - +-- + +CREATE TABLE log ( + id integer NOT NULL, + rec jsonb +); + + +-- +-- Name: log_id_seq; Type: SEQUENCE; Schema: evt; Owner: - +-- + +ALTER TABLE log ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY ( + SEQUENCE NAME log_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1 +); + + +SET search_path = tps, pg_catalog; + +-- +-- Name: srce; Type: TABLE; Schema: tps; Owner: - +-- + +CREATE TABLE srce ( + srce text NOT NULL, + defn jsonb +); + + +SET search_path = evt, pg_catalog; + +-- +-- Name: log log_pkey; Type: CONSTRAINT; Schema: evt; Owner: - +-- + +ALTER TABLE ONLY log + ADD CONSTRAINT log_pkey PRIMARY KEY (id); + + +SET search_path = tps, pg_catalog; + +-- +-- Name: srce srce_pkey; Type: CONSTRAINT; Schema: tps; Owner: - +-- + +ALTER TABLE ONLY srce + ADD CONSTRAINT srce_pkey PRIMARY KEY (srce); + + +-- +-- Name: public; Type: ACL; Schema: -; Owner: - +-- + +GRANT ALL ON SCHEMA public TO PUBLIC; + + +-- +-- PostgreSQL database dump complete +-- + From bcd628f93db8f62528279a19eaa8fe06657f4993 Mon Sep 17 00:00:00 2001 From: Paul Trowbridge Date: Fri, 13 Oct 2017 02:27:10 -0400 Subject: [PATCH 08/13] get rid of deletes, add trans table --- ubm_schema.backup | 80 ++++++++++++++++++++++++++++------------------- 1 file changed, 48 insertions(+), 32 deletions(-) diff --git a/ubm_schema.backup b/ubm_schema.backup index e640e3c..3e04f5f 100644 --- a/ubm_schema.backup +++ b/ubm_schema.backup @@ -2,8 +2,8 @@ -- PostgreSQL database dump -- --- Dumped from database version 10beta4 --- Dumped by pg_dump version 10beta4 +-- Dumped from database version 10rc1 +-- Dumped by pg_dump version 10rc1 SET statement_timeout = 0; SET lock_timeout = 0; @@ -14,25 +14,6 @@ SET check_function_bodies = false; SET client_min_messages = warning; SET row_security = off; -SET search_path = tps, pg_catalog; - -ALTER TABLE ONLY tps.srce DROP CONSTRAINT srce_pkey; -SET search_path = evt, pg_catalog; - -ALTER TABLE ONLY evt.log DROP CONSTRAINT log_pkey; -SET search_path = tps, pg_catalog; - -DROP TABLE tps.srce; -SET search_path = evt, pg_catalog; - -DROP TABLE evt.log; -SET search_path = tps, pg_catalog; - -DROP TYPE tps.srce_defn_schema; -DROP EXTENSION plpgsql; -DROP SCHEMA tps; -DROP SCHEMA public; -DROP SCHEMA evt; -- -- Name: evt; Type: SCHEMA; Schema: -; Owner: - -- @@ -41,17 +22,10 @@ CREATE SCHEMA evt; -- --- Name: public; Type: SCHEMA; Schema: -; Owner: - +-- Name: SCHEMA evt; Type: COMMENT; Schema: -; Owner: - -- -CREATE SCHEMA public; - - --- --- Name: SCHEMA public; Type: COMMENT; Schema: -; Owner: - --- - -COMMENT ON SCHEMA public IS 'standard public schema'; +COMMENT ON SCHEMA evt IS 'events'; -- @@ -61,6 +35,13 @@ COMMENT ON SCHEMA public IS 'standard public schema'; CREATE SCHEMA tps; +-- +-- Name: SCHEMA tps; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON SCHEMA tps IS 'third party source'; + + -- -- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: - -- @@ -129,6 +110,32 @@ CREATE TABLE srce ( ); +-- +-- Name: trans; Type: TABLE; Schema: tps; Owner: - +-- + +CREATE TABLE trans ( + id integer NOT NULL, + srce text, + rec jsonb, + map jsonb +); + + +-- +-- Name: trans_id_seq; Type: SEQUENCE; Schema: tps; Owner: - +-- + +ALTER TABLE trans ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY ( + SEQUENCE NAME trans_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1 +); + + SET search_path = evt, pg_catalog; -- @@ -150,10 +157,19 @@ ALTER TABLE ONLY srce -- --- Name: public; Type: ACL; Schema: -; Owner: - +-- Name: trans trans_pkey; Type: CONSTRAINT; Schema: tps; Owner: - -- -GRANT ALL ON SCHEMA public TO PUBLIC; +ALTER TABLE ONLY trans + ADD CONSTRAINT trans_pkey PRIMARY KEY (id); + + +-- +-- Name: trans trans_srce_fkey; Type: FK CONSTRAINT; Schema: tps; Owner: - +-- + +ALTER TABLE ONLY trans + ADD CONSTRAINT trans_srce_fkey FOREIGN KEY (srce) REFERENCES srce(srce); -- From acc0ce061381fd77230bc29b13fb1423aaba8979 Mon Sep 17 00:00:00 2001 From: Paul Trowbridge Date: Fri, 13 Oct 2017 02:28:11 -0400 Subject: [PATCH 09/13] change schema extension --- ubm_schema.backup => ubm_schema.sql | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename ubm_schema.backup => ubm_schema.sql (100%) diff --git a/ubm_schema.backup b/ubm_schema.sql similarity index 100% rename from ubm_schema.backup rename to ubm_schema.sql From 1a5aa396511dcf4c90ee6166e5e75bb417104e60 Mon Sep 17 00:00:00 2001 From: Paul Trowbridge Date: Fri, 13 Oct 2017 02:40:23 -0400 Subject: [PATCH 10/13] get rid of commented json sample, swap for pt branch files --- srce.pgsql | 62 ++++++++++++++---------------------------------------- 1 file changed, 16 insertions(+), 46 deletions(-) diff --git a/srce.pgsql b/srce.pgsql index 8af1773..1bf3a42 100644 --- a/srce.pgsql +++ b/srce.pgsql @@ -1,47 +1,3 @@ -/* -SELECT -jsonb_pretty( -$$ -{ - "name": "GOOGDM", - "type": "json_csv", - "schema": { - "rows": [ - { - "elements": [ - { - "status": "text", - "distance": { - "text": "text", - "value": "numeric" - }, - "duration": { - "text": "text", - "value": "value" - } - } - ] - } - ], - "status": "text", - "origin_addresses": [ - "text" - ], - "destination_addresses": [ - "text" - ] - }, - "unique_constraint": { - "type": "key", - "fields": [ - "{origin_adresses,0}", - "{destination_adresses,0}" - ] - } -} -$$::jsonb -) -*/ DO $$ @@ -59,13 +15,15 @@ begin TPS.srce --unwrap the schema definition array LEFT JOIN LATERAL jsonb_populate_recordset(null::tps.srce_defn_schema, defn->'schema') prs ON TRUE + WHERE + srce = 'DCARD' GROUP BY srce; ----------------------------------------------------add create table verbage in front of column list-------------------------------------------------------- _t := format('CREATE TEMP TABLE csv_i (%s)', _t); - --raise notice '%', _t; + raise notice '%', _t; ----------------------------------------------------build the table----------------------------------------------------------------------------------------- @@ -74,7 +32,19 @@ begin EXECUTE _t; + COPY csv_i FROM 'C:\Users\fleet\downloads\dc.csv' WITH (HEADER TRUE,DELIMITER ',', FORMAT CSV, ENCODING 'SQL_ASCII',QUOTE '"'); + + end $$; -SELECT * FROM csv_i; \ No newline at end of file +SELECT * FROM csv_i; + + + +/* +INSERT INTO + tps.trans (srce, rec) +SELECT + 'DCARD', row_to_json(csv_i) FROM csv_i; +*/ \ No newline at end of file From 378300550ff01c02bfb69e05e8e38f2542d5ba25 Mon Sep 17 00:00:00 2001 From: Paul Trowbridge Date: Fri, 13 Oct 2017 02:40:41 -0400 Subject: [PATCH 11/13] change packup params --- ubm_backup.cmd | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ubm_backup.cmd b/ubm_backup.cmd index 52e2350..e8e9242 100644 --- a/ubm_backup.cmd +++ b/ubm_backup.cmd @@ -1,2 +1,2 @@ -"C:\PostgreSQL\pg10\bin\pg_dump" -h localhost -p 5433 -U ptrowbridge -d ubm -c -s -O -F p -f "C:\users\fleet\Documents\tps_etl\ubm_schema.backup" -"C:\PostgreSQL\pg10\bin\pg_dump" -h localhost -p 5433 -U ptrowbridge -d ubm --column-inserts -a -O -F p -f "C:\users\fleet\Documents\tps_etl\ubm_data.backup" \ No newline at end of file +"C:\PostgreSQL\pg10\bin\pg_dump" -h localhost -p 5433 -U ptrowbridge -d ubm -s -O -F p -f "C:\users\fleet\Documents\tps_etl\ubm_schema.sql" +"C:\PostgreSQL\pg10\bin\pg_dump" -h localhost -p 5433 -U ptrowbridge -d ubm --column-inserts -a -O -F p -f "C:\users\fleet\Documents\tps_etl\ubm_data.sql" From 28451f749c45f6fb108e7452b8587f637f86224e Mon Sep 17 00:00:00 2001 From: Paul Trowbridge Date: Fri, 13 Oct 2017 02:46:28 -0400 Subject: [PATCH 12/13] change extension to sql --- ubm_data.backup => ubm_data.sql | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename ubm_data.backup => ubm_data.sql (100%) diff --git a/ubm_data.backup b/ubm_data.sql similarity index 100% rename from ubm_data.backup rename to ubm_data.sql From c7a92a27c876653a14bd30ea2acd39479eea0379 Mon Sep 17 00:00:00 2001 From: Paul Trowbridge Date: Fri, 13 Oct 2017 02:50:29 -0400 Subject: [PATCH 13/13] push changes to pt branch of pg db --- ubm_data.sql | 17 +++++++++++++++++ ubm_schema.sql | 4 ++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/ubm_data.sql b/ubm_data.sql index 094d8e9..93538cf 100644 --- a/ubm_data.sql +++ b/ubm_data.sql @@ -30,6 +30,13 @@ SET search_path = tps, pg_catalog; -- INSERT INTO srce (srce, defn) VALUES ('PNCC', '{"name": "PNCC", "type": "csv", "schema": [{"key": "AsOfDate", "type": "date"}, {"key": "BankId", "type": "text"}, {"key": "AccountNumber", "type": "text"}, {"key": "AccountName", "type": "text"}, {"key": "BaiControl", "type": "text"}, {"key": "Currency", "type": "text"}, {"key": "Transaction", "type": "text"}, {"key": "Reference", "type": "text"}, {"key": "Amount", "type": "text"}, {"key": "Description", "type": "text"}, {"key": "AdditionalRemittance", "type": "text"}], "unique_constraint": {"type": "range", "fields": ["{AsOfDate}"]}}'); +INSERT INTO srce (srce, defn) VALUES ('DCARD', '{"name": "DCARD", "type": "csv", "schema": [{"key": "Trans. Date", "type": "date"}, {"key": "Post Date", "type": "text"}, {"key": "Description", "type": "text"}, {"key": "Amount", "type": "text"}, {"key": "Category", "type": "text"}], "unique_constraint": {"type": "key", "fields": ["{Post Date}"]}}'); + + +-- +-- Data for Name: trans; Type: TABLE DATA; Schema: tps; Owner: - +-- + SET search_path = evt, pg_catalog; @@ -41,6 +48,16 @@ SET search_path = evt, pg_catalog; SELECT pg_catalog.setval('log_id_seq', 1, true); +SET search_path = tps, pg_catalog; + +-- +-- Name: trans_id_seq; Type: SEQUENCE SET; Schema: tps; Owner: - +-- + +SELECT pg_catalog.setval('trans_id_seq', 1, false); +---why is this here? + + -- -- PostgreSQL database dump complete -- diff --git a/ubm_schema.sql b/ubm_schema.sql index 3e04f5f..964a317 100644 --- a/ubm_schema.sql +++ b/ubm_schema.sql @@ -2,8 +2,8 @@ -- PostgreSQL database dump -- --- Dumped from database version 10rc1 --- Dumped by pg_dump version 10rc1 +-- Dumped from database version 10beta4 +-- Dumped by pg_dump version 10beta4 SET statement_timeout = 0; SET lock_timeout = 0;