क्या SHOW CREATE TABLE
पोस्टग्रेज में MySQL बराबर है ? क्या यह संभव है? यदि नहीं तो अगला सबसे अच्छा उपाय क्या है?
मुझे कथन की आवश्यकता है क्योंकि मैं इसका उपयोग दूरस्थ सर्वर (WCF पर) तालिका बनाने के लिए करता हूं।
क्या SHOW CREATE TABLE
पोस्टग्रेज में MySQL बराबर है ? क्या यह संभव है? यदि नहीं तो अगला सबसे अच्छा उपाय क्या है?
मुझे कथन की आवश्यकता है क्योंकि मैं इसका उपयोग दूरस्थ सर्वर (WCF पर) तालिका बनाने के लिए करता हूं।
जवाबों:
आप PostgreSQL लॉग फ़ाइल में पता लगाने की कोशिश कर सकते हैं कि "pg_dump -t टेबल -s" वास्तव में क्या करता है। फिर आप अपने स्वयं के sql फ़ंक्शन को लिखने के लिए उसी विधि का उपयोग कर सकते हैं।
pg_dump:
pg_dump -st tablename dbname
या PostgreSQL GUI टूल्स (pgAdmin, phpPgAdmin, आदि) का उपयोग करें।
--schema-only
इसका सटीक उद्देश्य है: स्कीमा / टेबल बनाने के लिए SQL स्टेटमेंट दिखाएं। आप इस आउटपुट को किसी भी तरह अपने C # प्रोग्राम में फीड कर सकते हैं।
.tar
, restore.sql
तो संग्रह से फ़ाइल को पकड़ो । इसमें तमाम बयान दिए गए हैं।
कमांड लाइन ( psql
) में आप चला सकते हैं: \d <table name>
सभी कॉलम, उनके प्रकार और अनुक्रमित को सूचीबद्ध करने के लिए।
@ क्यूबिकलसॉफ्ट के उत्तर के पहले भाग पर बिल्डिंग आप निम्नलिखित फ़ंक्शन में छोड़ सकते हैं जो सरल तालिकाओं के लिए काम करना चाहिए (डिफ़ॉल्ट 'सार्वजनिक' स्कीमा 'और बाधाओं, अनुक्रमित और उपयोगकर्ता परिभाषित डेटा प्रकार आदि को छोड़ देता है)। @RJS उत्तर फिलहाल इसे ठीक से करने का एकमात्र तरीका है; यह कुछ ऐसा है जिसे psql में बनाया जाना चाहिए!
CREATE OR REPLACE FUNCTION show_create_table(table_name text, join_char text = E'\n' )
RETURNS text AS
$BODY$
SELECT 'CREATE TABLE ' || $1 || ' (' || $2 || '' ||
string_agg(column_list.column_expr, ', ' || $2 || '') ||
'' || $2 || ');'
FROM (
SELECT ' ' || column_name || ' ' || data_type ||
coalesce('(' || character_maximum_length || ')', '') ||
case when is_nullable = 'YES' then '' else ' NOT NULL' end as column_expr
FROM information_schema.columns
WHERE table_schema = 'public' AND table_name = $1
ORDER BY ordinal_position) column_list;
$BODY$
LANGUAGE SQL STABLE;
मुझे लगता है कि मुझे इस पार्टी में थोड़ी देर हो गई है, लेकिन यह मेरी Google खोज का पहला परिणाम था, इसलिए मुझे लगा कि मैं इस बात का जवाब दूंगा कि मैं क्या लेकर आया हूं।
आप कॉलम प्राप्त करने के लिए इस क्वेरी के साथ समाधान की ओर बहुत दूर जा सकते हैं:
SELECT *
FROM information_schema.columns
WHERE table_schema = 'YOURSCHEMA' AND table_name = 'YOURTABLE'
ORDER BY ordinal_position;
और फिर सबसे सामान्य अनुक्रमित के लिए यह क्वेरी:
SELECT c.oid, c.relname, a.attname, a.attnum, i.indisprimary, i.indisunique
FROM pg_index AS i, pg_class AS c, pg_attribute AS a
WHERE i.indexrelid = c.oid AND i.indexrelid = a.attrelid AND i.indrelid = 'YOURSCHEMA.YOURTABLE'::regclass
ORDER BY" => "c.oid, a.attnum
फिर यह सही प्रारूप में क्वेरी स्ट्रिंग (ओं) के निर्माण की बात है।
जैसा कि मेटा-कमांड के साथ https://serverfault.com/a/875414/333439 में उत्तर दिया गया है , डेटाबेस में टेबल संरचना दिखाना संभव है। यदि आप मेटा-कमांड में प्रयुक्त क्वेरी देखना चाहते हैं, तो आप कमांड का उपयोग कर सकते हैं । जैसा कि मैनपेज में वर्णित है, स्विच मेटा-कमांड प्रश्नों को गूँजता है। तो, आप लॉन्च कर सकते हैं , आप मेटा-कमांड के साथ तालिका संरचना देख सकते हैं , और, स्विच के अनुसार , आप तालिका संरचना का वर्णन करने के लिए उत्पन्न क्वेरी देख सकते हैं।\d <table>
psql
psql -E
-E
\d
psql -E
\d <table>
-E
में pgAdmin 4 , बस छोड़ दिया, जैसे पर पेड़ में तालिका मिलेगी:
Servers
+ PostgreSQL 11
+ Databases
+ MYDATABASENAME
+ Schemas
+ public
+ Tables
+ MYTABLENAME <-- click this tree element
जब तालिका का चयन किया जाता है, तो दाईं ओर SQL टैब खोलें । यह CREATE TABLE
चयनित तालिका के लिए प्रदर्शित होता है ।
पोस्टग्रैट्स एक्सटेंशन ddlx ( https://github.com/lacanoid/pgddl ) ठीक यही और करता है।