プログラムでテーブルのDDLをPostgresqlで生成するにはどうすればよいですか?それを行うためのシステムクエリまたはコマンドはありますか?問題をグーグルで調べても、ポインターは返されませんでした。
答えは、pg_dumpのソースコードを確認し、DDLを生成するために使用するスイッチに従ってください。コード内のどこかに、DDLの生成に使用されるメタデータを取得するために使用されるいくつかのクエリがあります。
使用する pg_dump
このオプションを使用:
pg_dump -U user_name -h Host database -s -t table_or_view_names -f table_or_view_names.sql
説明:
-s or --schema-only : Dump only ddl / the object definitions (schema), without data.
-t or --table Dump : Dump only tables (or views or sequences) matching table
例:
-- dump each ddl table that elon build.
$ pg_dump -U elon -h localhost -s -t spacex -t tesla -t solarcity -t boring > companies.sql
トピック外の場合は申し訳ありません。誰が "psql dump ddl"をググリングしてこのスレッドにリダイレクトしたかを確認したいだけです。
pg_dump
データベースの内容(スキーマとデータの両方)をダンプするコマンド。 --schema-only
スイッチは、テーブルのDDLのみをダンプします。
Psqlへのシェルアウトが「プログラム的に」カウントされないのはなぜですか?スキーマ全体を非常に適切にダンプします。
とにかく、 information_schema からデータ型(およびその他)を取得できます(ここで参照される8.4ドキュメントですが、これは新機能ではありません)。
=# 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)
I 4つの関数を保存 モックアップするpg_dump -s
部分的に動作します。に基づく \d+
メタコマンド。使用法は同じようになります:
\pset format unaligned
select get_ddl_t(schemaname,tablename) as "--" from pg_tables where tableowner <> 'postgres';
もちろん、事前に関数を作成する必要があります。
Information_schemaからメタ情報を取得する方法についての良い記事 http://www.alberton.info/postgresql_meta_info.html を以下に示します。