She had an immense curiosity about life, and was constantly staring and wondering.
— Henry James in The Portrait of a Lady.
On a bright sunny day, while you’re on vacation on a remote island, you get an emergency call from your office regarding a failure on production database and you don’t have your workstation with you. And the only access you can get due to slow internet speed is SSH (Secure Shell), you try to access the remote production database using a rented computer and an SSH client; the tools inside the server is only compose of a
psql command. How can you export and backup your SQL schema layouts?
Don’t panic and don’t worry we got you covered, the
psql saves your day if you’ll just gonna be exporting SQL schema layouts.
First and foremost, fire up and execute the
psql command. Inside the
psql environment execute the commands below:
\o dump.txt SELECT 'postgresql' AS dbms,t.table_catalog,t.table_schema,t.table_name,c.column_name,c.ordinal_position,c.data_type,c.character_maximum_length,n.constraint_type,k2.table_schema,k2.table_name,k2.column_name FROM information_schema.tables t NATURAL LEFT JOIN information_schema.columns c LEFT JOIN(information_schema.key_column_usage k NATURAL JOIN information_schema.table_constraints n NATURAL LEFT JOIN information_schema.referential_constraints r) ON c.table_catalog=k.table_catalog AND c.table_schema=k.table_schema AND c.table_name=k.table_name AND c.column_name=k.column_name LEFT JOIN information_schema.key_column_usage k2 ON k.position_in_unique_constraint=k2.ordinal_position AND r.unique_constraint_catalog=k2.constraint_catalog AND r.unique_constraint_schema=k2.constraint_schema AND r.unique_constraint_name=k2.constraint_name WHERE t.TABLE_TYPE='BASE TABLE' AND t.table_schema NOT IN('information_schema','pg_catalog'); \O
This command will create a dump file containing all the table structure containing each constraint available, this is usually needed when you need to analyze ER (Entity Relation) diagram. You could example paste the output of this command on Lucid Chart to analyze entity relationship.
A break down of this is, the
SELECT command will query all table structure and schema.
\o => outputs to file
\O => turns off the output to file feature
The output file will be generated on the same directory where you run the
So guys, when on vacation what are the things you can do on a slow internet and a rented computer? Hope you enjoyed this article!