क्या सभी कुंजियों और बाधाओं सहित डेटा के बिना, एक तालिका की संरचना को एक नई तालिका में कॉपी करने का एक तरीका है?
जवाबों:
एक साधारण स्कीमा कॉपी के लिए क्लॉज की तरह उपयोग करें।
CREATE TABLE new_table_name ( like old_table_name including all)
ठीक है, एसक्यूएल के साथ आप निकटतम हो सकते हैं:
create table new (
like old
including defaults
including constraints
including indexes
);
लेकिन यह सब कुछ कॉपी नहीं करेगा। सबसे महत्वपूर्ण चीजें जो गायब हैं, वे हैं प्रमुख कुंजी। इसके अलावा - ट्रिगर्स भी कॉपी नहीं किए जाते हैं। अन्य चीजों के बारे में निश्चित नहीं।
एक और तरीका यह है कि टेबल संरचना को डंप करें, इसे डंप में नाम बदलें, और इसे फिर से लोड करें:
pg_dump -s -t old databases | sed 's/old/new/g' | psql
लेकिन सावधान रहना, कि इस तरह के सरलीकृत सेड भी अन्य स्थानों पर पुराने से नए में बदल जाएगा (उदाहरण के लिए यदि आपके पास "is_scolded" नाम का टेबल कॉलम है तो यह "is_scnewed" हो जाएगा)।
प्रश्न वास्तव में है: आपको इसकी आवश्यकता क्यों है - क्योंकि विभिन्न उद्देश्यों के लिए, मैं विभिन्न तकनीकों का उपयोग करूंगा।
including constraintsPostgreSQL 8.3
तालिका को पूरी तरह से कॉपी करने के लिए, TABLE कमांड का उपयोग करने वाले संक्षिप्त रूप का भी उपयोग किया जा सकता है:
CREATE TABLE films2 AS
TABLE films
WITH NO DATA;
अधिक जानकारी यहाँ
PgAdmin पर एक नज़र डालें - अब तक का सबसे आसान तरीका है कि आप क्या चाहते हैं।
तालिका पर राइट-क्लिक करें, लिपियों - बनाएँ।
कैसा रहेगा
CREATE TABLE sample_table_copy AS (SELECT * FROM sample_table WHERE 1 = 2)
CREATE TABLE new (like old, extra_column text);