Compare commits

...

4 Commits

4 changed files with 6 additions and 4 deletions

View File

@ -10,11 +10,11 @@ BEGIN
SELECT SELECT
-------------------------------------------create table--------------------------------------------------------------------------------------------------------- -------------------------------------------create table---------------------------------------------------------------------------------------------------------
'DROP TABLE IF EXISTS fc.'||func||' CASCADE; CREATE TABLE IF NOT EXISTS fc.'||func||' (' || 'DROP TABLE IF EXISTS fc.'||func||' CASCADE; CREATE TABLE IF NOT EXISTS fc.'||func||' (' ||
string_agg(format('%I',cname) || ' ' || dtype,', ' ORDER BY opos ASC) || string_agg(format('%I',cname) || ' ' || dtype,', ' ORDER BY CASE WHEN fkey IS NOT NULL THEN 0 ELSE opos END ASC) ||
', PRIMARY KEY ('||string_agg(format('%I',cname),', ') FILTER (WHERE fkey = func)||'));' AS ddl, ', PRIMARY KEY ('||string_agg(format('%I',cname),', ') FILTER (WHERE fkey = func)||'));' AS ddl,
-------------------------------------------populate table------------------------------------------------------------------------------------------------------- -------------------------------------------populate table-------------------------------------------------------------------------------------------------------
---need to add a clause to exclude where the key is null ---need to add a clause to exclude where the key is null
'INSERT INTO fc.'||func||' SELECT DISTINCT ' || string_agg(format('%I',cname),', ' ORDER BY opos ASC) || ' FROM '||tname||' WHERE '|| 'INSERT INTO fc.'||func||' SELECT DISTINCT ' || string_agg(format('%I',cname),', ' ORDER BY CASE WHEN fkey IS NOT NULL THEN 0 ELSE opos END ASC) || ' FROM '||tname||' WHERE '||
string_agg(format('%I',cname)||' IS NOT NULL ',' AND ') FILTER (WHERE fkey = func)||' ON CONFLICT DO NOTHING' AS pop, string_agg(format('%I',cname)||' IS NOT NULL ',' AND ') FILTER (WHERE fkey = func)||' ON CONFLICT DO NOTHING' AS pop,
-------------------------------------------setup foreign keys--------------------------------------------------------------------------------------------------- -------------------------------------------setup foreign keys---------------------------------------------------------------------------------------------------
'ALTER TABLE fc.live ADD CONSTRAINT fk_'||func||' FOREIGN KEY ('||string_agg(format('%I',cname),', ') FILTER (WHERE fkey = func)||') REFERENCES fc.'||func||' ('|| 'ALTER TABLE fc.live ADD CONSTRAINT fk_'||func||' FOREIGN KEY ('||string_agg(format('%I',cname),', ') FILTER (WHERE fkey = func)||') REFERENCES fc.'||func||' ('||

View File

@ -7,7 +7,7 @@ BEGIN
-------------------------------build a column list---------------------------------------- -------------------------------build a column list----------------------------------------
SELECT SELECT
string_agg( string_agg(
format('%I',cname) || CASE WHEN func IN ('odate','sdate') THEN ' + interval ''1 year''' ELSE '' END,E'\n,' ORDER BY opos ASC) format('%I',cname) || CASE WHEN func IN ('odate','sdate') AND dtype = 'date' THEN ' + interval ''1 year''' ELSE '' END,E'\n,' ORDER BY opos ASC)
INTO INTO
clist clist
FROM FROM

View File

@ -9,6 +9,7 @@ CREATE TABLE fc.target_meta (
,fkey text ,fkey text
,pretty text ,pretty text
,dtype text ,dtype text
,mastcol text
); );
--ALTER TABLE fc.target_meta DROP CONSTRAINT IF EXISTS target_meta_pk; --ALTER TABLE fc.target_meta DROP CONSTRAINT IF EXISTS target_meta_pk;

View File

@ -3,13 +3,14 @@ BEGIN;
INSERT INTO INSERT INTO
fc.target_meta fc.target_meta
SELECT SELECT
table_name table_schema||'.'||table_name
,column_name ,column_name
,ordinal_position ,ordinal_position
,'doc'::text func ,'doc'::text func
,null::text fkey --foreign key to a master table ,null::text fkey --foreign key to a master table
,null::text pretty ,null::text pretty
,data_type::text dtype ,data_type::text dtype
,column_name mastcol
FROM FROM
information_schema.columns information_schema.columns
WHERE WHERE