dbtoyaml - Database to YAML
Name
dbtoyaml -- extract the schema of a PostgreSQL database in YAML format
Synopsys
dbtoyaml [option...] dbname
Description
dbtoyaml is a utility for extracting the schema of a PostgreSQL database to a YAML formatted specification. Note that JSON is an official subset of YAML version 1.2, so the dbtoyaml output should also be compatible with JSON tools.
The output format is as follows:
schema public: table t1: check_constraints: check_expr: (c2 > 123) columns: - c2 columns: - c1: not_null: true type: integer - c2: type: smallint - c3: default: 'false' type: boolean - c4: type: text primary_key: t1_pkey: access_method: btree columns: - c1 foreign_keys: t1_c2_fkey: columns: - c2 references: columns: - c21 schema: s1 table: t2 schema s1: table t2: columns: - c21: not_null: true type: integer - c22: type: character varying(16) primary_key: t2_pkey: access_method: btree columns: - c21
The above should be mostly self-explanatory. The example database has two tables, named t1 and t2, the first in the public schema and the second in a schema named s1. The columns: specifications directly under each table list each column in that table, in the same order as shown by PostgreSQL. The specifications primary_key:, foreign_keys: and check_constraints: define PRIMARY KEY, FOREIGN KEY and CHECK constraints for a given table. Additional specifications (not shown) define unique constraints and indexes.
dbtoyaml currently supports extracting information about schemas, sequences, tables, columns, primary keys, foreign keys, unique constraints, check constraints and indexes.
Options
dbtoyaml accepts the following command-line arguments:
dbname
Specifies the name of the database whose schema is to extracted.
-H host, --host= host
Specifies the host name of the machine on which the PostgreSQL server is running. The default host name is 'localhost'.
-n schema, --schema= schema
Extracts only a schema matching schema. By default, all schemas are extracted.
-p port, --port= port
Specifies the TCP port on which the PostgreSQL server is listening for connections. The default port number is 5432.
-t table, --table= table
Extract only tables matching table.
-U username, --user= username
User name to connect as. The default user name is provided by the environment variable USER.
Examples
To extract a database called moviesdb into a file:
dbtoyaml moviesdb > moviesdb.yaml
To extract only the schema named store:
dbtoyaml --schema=store moviesdb > moviesdb.yaml
To extract the tables named film and category:
dbtoyaml -t film -t category moviesdb > moviesdb.yaml