Compare commits
	
		
			2 Commits
		
	
	
		
			860b34fad8
			...
			0f698d5621
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 0f698d5621 | |||
| ba93b6b84e | 
@ -9,22 +9,27 @@ BEGIN
 | 
			
		||||
    FOR f IN  
 | 
			
		||||
        SELECT
 | 
			
		||||
            -------------------------------------------create table---------------------------------------------------------------------------------------------------------
 | 
			
		||||
            'DROP TABLE IF EXISTS fc.'||func||'; 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) || 
 | 
			
		||||
            ', PRIMARY KEY ('||string_agg(format('%I',cname),', ') FILTER (WHERE fkey = func)||'));' AS ddl,
 | 
			
		||||
            -------------------------------------------populate table-------------------------------------------------------------------------------------------------------
 | 
			
		||||
            ---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 rlarp.osm_dev WHERE '||
 | 
			
		||||
            string_agg(format('%I',cname)||' IS NOT NULL ',' AND ') FILTER (WHERE fkey = func)||' ON CONFLICT DO NOTHING' AS pop
 | 
			
		||||
            'INSERT INTO fc.'||func||' SELECT DISTINCT ' || string_agg(format('%I',cname),', ' ORDER BY opos ASC) || ' FROM '||tname||' WHERE '||
 | 
			
		||||
            string_agg(format('%I',cname)||' IS NOT NULL ',' AND ') FILTER (WHERE fkey = func)||' ON CONFLICT DO NOTHING' AS pop,
 | 
			
		||||
            -------------------------------------------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||' ('||
 | 
			
		||||
            string_agg(format('%I',cname),', ') FILTER (WHERE fkey = func)||')' AS fk
 | 
			
		||||
        FROM
 | 
			
		||||
            fc.target_meta
 | 
			
		||||
        GROUP BY
 | 
			
		||||
            func
 | 
			
		||||
            tname
 | 
			
		||||
            ,func
 | 
			
		||||
        HAVING
 | 
			
		||||
            string_agg(cname,', ') FILTER (WHERE fkey = func) <> ''
 | 
			
		||||
    loop 
 | 
			
		||||
        EXECUTE format('%s',f.ddl);
 | 
			
		||||
        EXECUTE format('%s',f.pop);
 | 
			
		||||
        EXECUTE format('%s',f.fk);
 | 
			
		||||
    END LOOP;
 | 
			
		||||
END;
 | 
			
		||||
$$
 | 
			
		||||
 | 
			
		||||
@ -13,8 +13,8 @@ SELECT
 | 
			
		||||
FROM 
 | 
			
		||||
    information_schema.columns 
 | 
			
		||||
WHERE 
 | 
			
		||||
    table_name = 'osm_dev' 
 | 
			
		||||
    AND table_schema = 'rlarp'
 | 
			
		||||
    table_name = 'live' 
 | 
			
		||||
    AND table_schema = 'fc'
 | 
			
		||||
ON CONFLICT ON CONSTRAINT target_meta_pk DO UPDATE SET
 | 
			
		||||
    opos = EXCLUDED.opos
 | 
			
		||||
    ,dtype = EXCLUDED.dtype;
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user