Making a duplicate copy of a schema in the same database without data in Greenplum

Post date: Feb 26, 2015 7:14:1 PM

Easiest way to make a duplicate copy of a schema without data in the same database. Lets say I have an schema in dbadmin in sachi database. I want another schema dbadmin2 in the same database without data to preserve the schema object DDL. 

Step: Run a simple checksum to count the tables and views.

sachi=# \dt dbadmin.*

                     List of relations

 Schema  |         Name         | Type  |  Owner  | Storage 

---------+----------------------+-------+---------+---------

 dbadmin | smart_analyze_config | table | gpadmin | heap

(1 row)

sachi=# \dv dbadmin.*

                      List of relations

 Schema  |          Name          | Type |  Owner  | Storage 

---------+------------------------+------+---------+---------

 dbadmin | v_dist_key             | view | gpadmin | none

 dbadmin | v_distribution_key     | view | gpadmin | none

 dbadmin | v_distribution_key1    | view | gpadmin | none

 dbadmin | v_distribution_key2    | view | gpadmin | none

 dbadmin | v_distribution_key3    | view | gpadmin | none

 dbadmin | v_smart_analyze_confif | view | gpadmin | none

 dbadmin | v_smart_analyze_config | view | gpadmin | none

(7 rows)

Step 2:

[gpadmin@sachi ~]$ pg_dump -n dbadmin sachi |sed '1,${s/dbadmin/dbadmin2/}'|psql sachi

Step 3: Revalidate the count

sachi=# \dt dbadmin2.*

                      List of relations

  Schema  |         Name         | Type  |  Owner  | Storage 

----------+----------------------+-------+---------+---------

 dbadmin2 | smart_analyze_config | table | gpadmin | heap

(1 row)

sachi=# \dv dbadmin2.*

                      List of relations

  Schema  |          Name          | Type |  Owner  | Storage 

----------+------------------------+------+---------+---------

 dbadmin2 | v_dist_key             | view | gpadmin | none

 dbadmin2 | v_distribution_key     | view | gpadmin | none

 dbadmin2 | v_distribution_key1    | view | gpadmin | none

 dbadmin2 | v_distribution_key2    | view | gpadmin | none

 dbadmin2 | v_distribution_key3    | view | gpadmin | none

 dbadmin2 | v_smart_analyze_confif | view | gpadmin | none

 dbadmin2 | v_smart_analyze_config | view | gpadmin | none

(7 rows)

sachi=#