1.) जब आपको क्वेरी के लिए परिशिष्ट नोटिस की आवश्यकता होती है, तो आप नेस्टेड टिप्पणी का उपयोग कर सकते हैं
SELECT
a, b, c
FROM mytab;
2.) एक डेटाबेस में सभी text
और varchar
क्षेत्र से ट्रेलिंग रिक्त स्थान निकालें ।
do $$
declare
selectrow record;
begin
for selectrow in
select
'UPDATE '||c.table_name||' SET '||c.COLUMN_NAME||'=TRIM('||c.COLUMN_NAME||') WHERE '||c.COLUMN_NAME||' ILIKE ''% '' ' as script
from (
select
table_name,COLUMN_NAME
from
INFORMATION_SCHEMA.COLUMNS
where
table_name LIKE 'tbl%' and (data_type='text' or data_type='character varying' )
) c
loop
execute selectrow.script;
end loop;
end;
$$;
3.) हम डुप्लिकेट पंक्तियों को हटाने के लिए एक विंडो फ़ंक्शन का उपयोग कर सकते हैं:
DELETE FROM tab
WHERE id IN (SELECT id
FROM (SELECT row_number() OVER (PARTITION BY column_with_duplicate_values), id
FROM tab) x
WHERE x.row_number > 1);
कुछ PostgreSQL का अनुकूलित संस्करण (ctid के साथ):
DELETE FROM tab
WHERE ctid = ANY(ARRAY(SELECT ctid
FROM (SELECT row_number() OVER (PARTITION BY column_with_duplicate_values), ctid
FROM tab) x
WHERE x.row_number > 1));
4.) जब हमें सर्वर की स्थिति की पहचान करने की आवश्यकता होती है, तो हम एक फ़ंक्शन का उपयोग कर सकते हैं:
SELECT pg_is_in_recovery();
5.) फ़ंक्शन के डीडीएल कमांड प्राप्त करें।
select pg_get_functiondef((select oid from pg_proc where proname = 'f1'));
6.) PostgreSQL में सुरक्षित रूप से कॉलम डेटा प्रकार बदलना
create table test(id varchar );
insert into test values('1');
insert into test values('11');
insert into test values('12');
select * from test
id
character varying
1
11
12
आप उपरोक्त तालिका से देख सकते हैं कि मैंने 'id'
कॉलम के लिए डेटा प्रकार - 'वर्ण भिन्न' का उपयोग किया है । लेकिन यह एक गलती थी, क्योंकि मैं हमेशा पूर्णांक आईडी के रूप में दे रहा हूं। इसलिए यहां वर्चूर का उपयोग करना एक बुरा व्यवहार है। तो आइए कॉलम प्रकार को पूर्णांक में बदलने का प्रयास करें।
ALTER TABLE test ALTER COLUMN id TYPE integer;
लेकिन यह रिटर्न:
त्रुटि: कॉलम “id” पूर्णांक टाइप करने के लिए स्वचालित रूप से नहीं डाला जा सकता है SQL राज्य: 42804 संकेत: रूपांतरण करने के लिए एक USING अभिव्यक्ति निर्दिष्ट करें
इसका मतलब है कि हम केवल डेटा प्रकार नहीं बदल सकते क्योंकि डेटा पहले से ही कॉलम में मौजूद है। चूँकि डेटा टाइप 'कैरेक्टर बदलती' है, इसलिए यह उम्मीद नहीं कर सकता कि यह पूर्णांक के रूप में है, हालांकि हमने केवल पूर्णांक में प्रवेश किया है। इसलिए अब, जैसा कि पोस्टग्रेट्स ने सुझाव दिया है कि हम अपने डेटा को पूर्णांक में डालने के लिए 'उपयोग' की अभिव्यक्ति का उपयोग कर सकते हैं।
ALTER TABLE test ALTER COLUMN id TYPE integer USING (id ::integer);
यह काम करता हैं।
7.) पता है कि कौन डेटाबेस से जुड़ा है
यह कमोबेश एक निगरानी कमांड है। यह जानने के लिए कि कौन सा उपयोगकर्ता अपने आईपी और पोर्ट सहित किस डेटाबेस से जुड़ा है, निम्न एसक्यूएल का उपयोग करें:
SELECT datname,usename,client_addr,client_port FROM pg_stat_activity ;
सर्वर पुनः आरंभ करने के बिना 8.) PostgreSQL कॉन्फ़िगरेशन फ़ाइलों को पुनः लोड करना
PostgreSQL कॉन्फ़िगरेशन पैरामीटर विशेष फ़ाइलों जैसे postgresql.conf और pg_hba.conf में स्थित हैं। अक्सर, आपको इन मापदंडों को बदलने की आवश्यकता हो सकती है। लेकिन कुछ मापदंडों को प्रभावी करने के लिए हमें अक्सर कॉन्फ़िगरेशन फ़ाइल को पुनः लोड करने की आवश्यकता होती है। बेशक, सर्वर को पुनरारंभ करने से यह हो जाएगा। लेकिन उत्पादन के माहौल में, यह डेटाबेस को पुनः आरंभ करने के लिए पसंद नहीं है, जिसका उपयोग हजारों द्वारा किया जा रहा है, बस कुछ मापदंडों को सेट करने के लिए। ऐसी स्थितियों में, हम निम्नलिखित फ़ंक्शन का उपयोग करके सर्वर को पुनरारंभ किए बिना कॉन्फ़िगरेशन फ़ाइलों को फिर से लोड कर सकते हैं:
select pg_reload_conf();
याद रखें, यह सभी मापदंडों के लिए अभ्यस्त काम करता है, कुछ पैरामीटर परिवर्तनों को प्रभावी होने के लिए सर्वर के पूर्ण पुनरारंभ की आवश्यकता होती है।
9.) वर्तमान डेटाबेस क्लस्टर के डेटा निर्देशिका पथ को प्राप्त करना
यह संभव है कि एक प्रणाली में, पोस्टग्रेएसक्यूएल के कई उदाहरण (क्लस्टर) स्थापित किए जाते हैं, आम तौर पर, विभिन्न बंदरगाहों में या तो। ऐसे मामलों में, कौन सी निर्देशिका (भौतिक भंडारण निर्देशिका) का उपयोग किया जाता है, किस उदाहरण से एक व्यस्त कार्य है। ऐसे मामलों में, हम निर्देशिका पथ प्राप्त करने के लिए हमारी रुचि के क्लस्टर में किसी भी डेटाबेस में निम्न कमांड का उपयोग कर सकते हैं:
SHOW data_directory;
समान फ़ंक्शन का उपयोग क्लस्टर की डेटा निर्देशिका को बदलने के लिए किया जा सकता है, लेकिन इसके लिए सर्वर पुनरारंभ की आवश्यकता होती है:
SET data_directory to new_directory_path;
10.) एक CHAR DATE है या नहीं खोजें
create or replace function is_date(s varchar) returns boolean as $$
begin
perform s::date;
return true;
exception when others then
return false;
end;
$$ language plpgsql;
उपयोग: निम्नलिखित सत्य वापस आ जाएगा
select is_date('12-12-2014')
select is_date('12/12/2014')
select is_date('20141212')
select is_date('2014.12.12')
select is_date('2014,12,12')
11.) PostgreSQL में मालिक को बदलें
REASSIGN OWNED BY sa TO postgres;
12.) PGADMIN PLPGSQL DEBUGGER
अच्छी तरह से यहाँ समझाया