Первый раздел Шаблонов разработки (GoF, 1994) имеет вариант использования для реализации отмены/восстановления как шаблон разработки.
Ответ - это проверка исходного кода для PG_dump и следуйте переключателям, которые он использует для генерации DDL. Где-то внутри кода есть ряд запросов, используемых для извлечения метаданных, используемых для генерации DDL.
You can use the pg_dump
command to dump the contents of the database (both schema and data). The --schema-only
switch will dump only the DDL for your table(s).
Почему обстрел до psql не считается "программно"? Это выкинет всю схему очень красиво.
Так или иначе, вы можете получить типы данных (и многое другое) из information_schema (8.4 docs ссылаются здесь, но это не новая возможность):
=# select column_name, data_type from information_schema.columns
-# where table_name = 'config';
column_name | data_type
--------------------+-----------
id | integer
default_printer_id | integer
master_host_enable | boolean
(3 rows)
Вот хорошая статья о том, как получить метаинформацию из информационной схемы, http://www.alberton.info/postgresql_meta_info.html .