PostgreSQLの「use database_name」コマンド


366

私はPostgreSQLの初心者です。

USEMySQLやMS SQL Serverのコマンドのように、Postgresのクエリエディタから別のデータベースに接続したい。

\c databasenameインターネットを検索して見つけましたが、psqlでのみ動作します。PostgreSQLクエリエディターから実行しようとすると、構文エラーが発生します。

pgscriptでデータベースを変更する必要があります。誰でもそれを行う方法を知っていますか?



別のオプションは、スキーマに直接接続することです。例:sudo -u postgres psql -d my_database_name出典
AlikElzin-kilaka

回答:


382

あなたがPostgreSQLそれに接続するとき、それは常に特定のデータベースへのものです。別のデータベースにアクセスするには、新しい接続を取得する必要があります。

\cpsqlでを使用すると、指定したデータベースや資格情報を使用して、古い接続が閉じ、新しい接続が取得されます。まったく新しいバックエンドプロセスとすべてが手に入ります。


貴重なガイダンスを提供してくれたkgrittnに感謝します。pgscriptクエリを使用して、データベースへの新しい接続を作成し、以前の接続を閉じる方法を教えていただけますか?
sam

私はpgscriptに慣れていません。もしそれがあなたが関数を書く言語だとしたら、答えはそれができないということです。おそらく、異なるデータベースではなく、異なるスキーマにテーブルを配置することを検討する必要がありますか?
kgrittn 2012

2
クエリはPostgreSQLのデータベースを変更できません。
kgrittn 2012

助けてくれてありがとうkgrittn .. :)
sam

8
私が誤解していなければ、MySQLのデータベースはPostgreSQLのスキーマに似ています-それらを切り替えることができますが、PostgreSQLのDBはまったく別の球技です。
mpen

213

接続時に使用するデータベースを指定する必要があります。スクリプトにpsqlを使用する場合は、「\ c name_database」を使用できます

user_name=# CREATE DATABASE testdatabase; 
user_name=# \c testdatabase 

この時点で、次の出力が表示される場合があります

You are now connected to database "testdatabase" as user "user_name".
testdatabase=#

プロンプトがどのように変化するかに注意してください。乾杯、これも探していて、MySQLや他の私の見解と比較して、postgreSQLに関する情報が少なすぎます。



9

私が直面したMySQLからの移行中の基本的な問題は、databasePostgreSQLでも同じと考えていましたが、そうではありませんでした。したがって、アプリケーションまたはからデータベースを切り替えるpgAdminと、期待どおりの結果が得られません。私の場合と同様に、顧客ごとに個別のスキーマ(ここではPostgreSQLの用語を考慮しています)と個別の管理スキーマがあります。したがって、アプリケーションでは、スキーマを切り替える必要があります。

これには、SET search_pathコマンドを使用できます。これは、現在のスキーマを現在のセッションの指定されたスキーマ名に切り替えます。

例:

SET search_path = different_schema_name;

これにより、current_schemaがセッションの指定されたスキーマに変更されます。恒久的に変更するには、postgresql.confファイルを変更する必要があります。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.