PostgreSQLで既存のテーブルの「CREATE TABLE」SQLステートメントを生成する方法
PostgreSQLで既存のテーブルの「CREATE TABLE」SQLステートメントを生成するには、いくつかの方法があります。
方法
-
pg_dumpコマンドは、PostgreSQLデータベースをダンプするためのコマンドラインツールです。このコマンドを使用して、既存のテーブルの「CREATE TABLE」ステートメントを含むデータベーススキーマをダンプすることができます。
pg_dump -t テーブル名 -s データベース名 > create_table.sql
上記の例では、
テーブル名
テーブルの「CREATE TABLE」ステートメントを含むcreate_table.sql
ファイルが生成されます。 -
情報スキーマを使用する
PostgreSQLの情報スキーマには、データベース内のテーブルに関する情報が含まれています。この情報を使用して、既存のテーブルの「CREATE TABLE」ステートメントを生成することができます。
SELECT 'CREATE TABLE ' || table_name || ' (' || string_agg(column_name || ' ' || data_type || ' ' || COALESCE(column_default, ''), ', ') || ');' FROM information_schema.columns WHERE table_name = 'テーブル名';
補足
- 上記の方法で生成された「CREATE TABLE」ステートメントは、テーブルのデータは含まれません。
- 生成されたステートメントは、必要に応じて編集することができます。
-- pg_dumpコマンドを使用する
pg_dump -t public.products -s postgres > create_table.sql
-- psqlコマンドを使用する
psql -d postgres -c "\d public.products" > create_table.sql
-- 情報スキーマを使用する
SELECT 'CREATE TABLE ' || table_name || ' ('
|| string_agg(column_name || ' ' || data_type || ' ' || COALESCE(column_default, ''), ', ')
|| ');'
FROM information_schema.columns
WHERE table_name = 'public.products';
上記のコードを実行すると、create_table.sql
ファイルに以下の内容が生成されます。
CREATE TABLE public.products (
product_id serial NOT NULL,
product_name text NOT NULL,
product_description text,
product_price numeric(10,2),
product_quantity integer,
PRIMARY KEY (product_id)
);
- 上記の例では、
public
スキーマのproducts
テーブルを使用しています。
PostgreSQLで既存のテーブルの「CREATE TABLE」SQLステートメントを生成する方法
-
GUIツールを使用する
postgresql