Apakah ada cara untuk menyalin struktur tabel ke tabel baru, tanpa data, termasuk semua kunci dan pembatas?
Jawaban:
Untuk salinan skema sederhana gunakan klausa like.
CREATE TABLE new_table_name ( like old_table_name including all)
Nah, hal terdekat yang bisa Anda dapatkan dengan SQL adalah:
create table new (
like old
including defaults
including constraints
including indexes
);
Tapi itu tidak akan menyalin semuanya. Hal terpenting yang hilang adalah FOREIGN KEYs. Juga - pemicu juga tidak disalin. Tidak yakin tentang hal lain.
Cara lain adalah membuang struktur tabel, mengubah namanya di dump, dan memuatnya lagi:
pg_dump -s -t old databases | sed 's/old/new/g' | psql
Namun berhati-hatilah, sed sederhananya sed juga akan mengubah lama menjadi baru di tempat lain (misalnya jika Anda memiliki di kolom tabel Anda bernama "is_scolded" itu akan menjadi "is_scnewed").
Pertanyaannya sebenarnya adalah: mengapa Anda membutuhkannya - karena untuk berbagai tujuan, saya akan menggunakan teknik yang berbeda.
including constraintstidak berfungsi pada PostgreSQL 8.3
Untuk menyalin tabel secara lengkap, bentuk singkat menggunakan perintah TABLE juga dapat digunakan:
CREATE TABLE films2 AS
TABLE films
WITH NO DATA;
Lebih lengkapnya di sini
Lihatlah pgAdmin - sejauh ini cara termudah untuk melakukan apa yang Anda inginkan.
Klik kanan pada tabel, Skrip - Buat.
Bagaimana tentang
CREATE TABLE sample_table_copy AS (SELECT * FROM sample_table WHERE 1 = 2)
CREATE TABLE new (like old, extra_column text);