কীভাবে পিএসকিএল-এ ডাটাবেসগুলি স্যুইচ করবেন?


উত্তর:


1654

PostgreSQL এ, আপনি \connectক্লায়েন্ট টুল পিএসএকিএল এর মেটা-কমান্ড ব্যবহার করতে পারেন :

\connect DBNAME

বা সংক্ষেপে:

\c DBNAME

126
+1: এটি কেবলমাত্র একটি পিএসকিএল কমান্ড, পোস্টগ্রিসে নিজেই, "স্যুইচ" করার কোনও উপায় নেই। আসলে, পিএসকিএল মাইএসকিউএল প্রসঙ্গে "স্যুইচিং" নয়, কেবল একটি সংযোগ বন্ধ করে অন্যটি খুলছে opening
rfusca

12
সুতরাং এসকিউএল দিয়ে এটি করার কোন সুযোগ নেই?
বোরিস

5
সুতরাং এই .sqlফাইলটি মধ্যে এসকিউএল বিবৃতি মধ্যে কাজ করতে পারেন ? যেমন আমি কি CREATE DATABASE mydb;অনুসরণ করতে পারি \connect mydb?
J86

1
@ সিওয়ান আমি নিশ্চিত যে আপনি psqlএসকিউএল স্ক্রিপ্ট ফাইলে কমান্ডগুলি অন্তর্ভুক্ত করতে পারবেন না ।
কেনি এভিট

183

আপনি \c <database>বা দিয়ে একটি ডাটাবেসে সংযোগ করতে পারেন \connect <database>



31

পিএসকিএল-এর সাথে সংযোগের সময় আপনি ডাটাবেস নির্বাচন করতে পারেন। স্ক্রিপ্ট থেকে এটি ব্যবহার করার সময় এটি কার্যকর:

sudo -u postgres psql -c "CREATE SCHEMA test AUTHORIZATION test;" test

4
ধন্যবাদ, আমি পাগল হয়ে যাচ্ছিলাম ... :)
রিচার্ড

10

\lডাটাবেসগুলির \cজন্য ডাটাবেসনাম \dfনির্দিষ্ট ডাটাবেসে সঞ্চিত পদ্ধতিগুলির জন্য ডিবিতে স্যুইচ করতে



7

আপনার পোস্টগ্রিজ এসকিউএল আরডিএমএসের অভ্যন্তরে থাকা বিভিন্ন ডাটাবেসে স্যুইচ করতে নীচের বিবৃতিটি ব্যবহার করুন

\c databaseName

1

আপনি যদি শুরুতে একটি নির্দিষ্ট ডাটাবেসে স্যুইচ করতে চান তবে চেষ্টা করুন

/Applications/Postgres.app/Contents/Versions/9.5/bin/psql vigneshdb;

ডিফল্টরূপে পোস্টগ্র্রেস পোর্টে 5432 চালায় it

/Applications/Postgres.app/Contents/Versions/9.5/bin/psql -p2345 vigneshdb;

একটি সাধারণ নাম দিয়ে, আমরা এটি সহজ করতে পারেন।

আপনার .bashrcবা একটি উপনাম তৈরি করুন.bash_profile

function psql()
{
    db=vigneshdb
    if [ "$1" != ""]; then
            db=$1
    fi
    /Applications/Postgres.app/Contents/Versions/9.5/bin/psql -p5432 $1
}

psqlকমান্ড লাইনে রান করুন , এটি ডিফল্ট ডাটাবেসে স্যুইচ করবে; psql anotherdb, এটি স্টার্টআপে যুক্তি দিয়ে নামটি ডিবিতে স্যুইচ করবে।


1

যদিও প্রশ্নে স্পষ্ট করে বলা হয়নি, উদ্দেশ্যটি একটি নির্দিষ্ট স্কিমা / ডাটাবেসের সাথে সংযোগ স্থাপন করা।

আরেকটি বিকল্প হ'ল সরাসরি স্কিমাতে সংযোগ স্থাপন করা। উদাহরণ:

sudo -u postgres psql -d my_database_name

উত্স থেকে man psql:

-d dbname
--dbname=dbname
   Specifies the name of the database to connect to. This is equivalent to specifying dbname as the first non-option argument on the command line.

   If this parameter contains an = sign or starts with a valid URI prefix (postgresql:// or postgres://), it is treated as a conninfo string. See Section 31.1.1, Connection Strings”, in the
   documentation for more information.

1

আপনি নিম্নলিখিত হিসাবে একটি পৃথক ROLE সঙ্গে একটি ডাটাবেস সংযোগ করতে পারেন।

\connect DBNAME ROLENAME;

অথবা

\c DBNAME ROLENAME;

0

আপনি ব্যবহার করে সংযোগ করতে পারেন

d গ dbname

আপনি যদি পোস্টগ্রিজ এসকিউএল বা এসকিউএল-এর জন্য সম্ভাব্য সমস্ত কমান্ড দেখতে চান তবে এই পদক্ষেপগুলি অনুসরণ করুন:

  1. Rails dbconsole (আপনি আপনার বর্তমান ENV ডাটাবেসে পুনর্নির্মাণ করবেন)

  2. \? (পোস্টগ্রিএসকিউএল কমান্ডের জন্য)

অথবা

  1. \ এইচ (এসকিউএল কমান্ডের জন্য)

  2. প্রস্থান করতে Q টিপুন


-11

অন্যান্য উত্তরে উল্লিখিত হিসাবে, আপনাকে একটি পৃথক ডাটাবেস ব্যবহার করার জন্য সংযোগ পরিবর্তন করতে হবে।

পোস্টগ্রিস স্কিমার সাথে কাজ করে। আপনার একক ডাটাবেসে একাধিক স্কিম থাকতে পারে। সুতরাং, আপনি যদি একই ডাটাবেসের মধ্যে কাজ করছেন এবং স্কিমা পরিবর্তন করতে চান তবে আপনি এটি করতে পারেন:

SET SCHEMA 'schema_name';


9
এটা ভুল. এটি কেবল অনুসন্ধানের পথে ব্যবহৃত স্কিমা পরিবর্তন করবে। একটি ডাটাবেসে একাধিক স্কিমা টা থাকে।
সমস্ত শ্রমিক

@ সিপিবার্নজ আমি আপনার সাথে একমত
মঙ্গেংকাস

1
@ Cpburnz এর মন্তব্য ছাড়াও, SET SCHEMAহিসাবে ব্যবহার করা হয় SET SCHEMA 'schema_name'না SET SCHEMA 'database_name'। সুতরাং এটি ডাটাবেস নয় স্কিমা পরিবর্তন করার একটি এসকিউএল উপায়। এছাড়াও এটি অনুরূপ SET search_path TO schema_nameএখানে বা এখানে ডকুমেন্টেশন দেখুন ।
ইব্রাহিম দাউদা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.