SHOW CREATE TABLE
পোস্টগ্রিসে কি কোনও মাইএসকিউএল সমতুল্য রয়েছে ? এটা কি সম্ভব? না হলে পরবর্তী সেরা সমাধান কী?
আমার বিবৃতিটি প্রয়োজন কারণ আমি এটি একটি রিমোট সার্ভারে টেবিল তৈরি করতে (ডাব্লুসিএফের ওপরে) ব্যবহার করি।
SHOW CREATE TABLE
পোস্টগ্রিসে কি কোনও মাইএসকিউএল সমতুল্য রয়েছে ? এটা কি সম্ভব? না হলে পরবর্তী সেরা সমাধান কী?
আমার বিবৃতিটি প্রয়োজন কারণ আমি এটি একটি রিমোট সার্ভারে টেবিল তৈরি করতে (ডাব্লুসিএফের ওপরে) ব্যবহার করি।
উত্তর:
আপনি পোস্টগ্র্রেএসকিউএল লগ ফাইলটি "pg_dump -t টেবিল-গুলি" কী করে তা সন্ধান করার চেষ্টা করতে পারেন। তারপরে আপনি একই পদ্ধতিটি আপনার নিজের এসকিএল ফাংশন লিখতে পারেন।
pg_dump:
pg_dump -st tablename dbname
অথবা PostgreSQL GUI সরঞ্জামগুলি ব্যবহার করুন (pgAdmin, phpPgAdmin, ইত্যাদি)
--schema-only
এই সঠিক উদ্দেশ্য আছে: স্কিমা / সারণী তৈরি করতে এসকিউএল বিবৃতি প্রদর্শন করুন। আপনি এই আউটপুটটি কোনওভাবে আপনার সি # প্রোগ্রামে ফিড করতে পারেন।
.tar
, দখল restore.sql
আর্কাইভ থেকে ফাইল। এটিতে সমস্ত তৈরি বিবৃতি রয়েছে।
কমান্ড লাইনে ( psql
) আপনি চালাতে পারেন: \d <table name>
সমস্ত কলাম, তাদের ধরণ এবং সূচি তালিকাবদ্ধ করতে।
@ কিউবিকলসফ্টের উত্তরের প্রথম অংশে বিল্ডিং আপনি নিম্নলিখিত ফাংশনটিতে ফেলে দিতে পারেন যা সাধারণ টেবিলগুলির জন্য কাজ করা উচিত (ডিফল্ট 'পাবলিক' স্কিমা 'ধরে রাখে এবং সীমাবদ্ধতা, সূচি এবং ব্যবহারকারী সংজ্ঞায়িত ডেটা প্রকার ইত্যাদি বাদ দেয়)। @ আরজেএস উত্তর হ'ল এই মুহুর্তে এটি সঠিকভাবে করার একমাত্র উপায়; এটি পিএসকিএল মধ্যে তৈরি করা উচিত যে কিছু!
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;
আমি বুঝতে পেরেছি যে আমি এই পার্টিতে কিছুটা দেরি করেছি, তবে এটি আমার গুগল অনুসন্ধানে প্রথম ফলাফল ছিল তাই আমি বুঝতে পেরেছিলাম যে আমি কী নিয়ে এসেছি তার উত্তর দিয়েছি।
কলামগুলি পাওয়ার জন্য আপনি এই ক্যোয়ারির সাথে সমাধানের দিকে বেশ দূরে যেতে পারেন:
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
সারণিটি নির্বাচন করা হলে ডানদিকে এসকিউএল ট্যাবটি খুলুন । এটি CREATE TABLE
নির্বাচিত টেবিলের জন্য প্রদর্শন করে ।
পোস্টগ্র্যাস এক্সটেনশন ডিডিএলএক্স ( https://github.com/lacanoid/pgddl ) ঠিক এই এবং আরও অনেক কিছু করে।