回答:
.sql
ファイル内のSQLステートメント間で機能しますか?例えば、私はCREATE DATABASE mydb;
続いても\connect mydb
いいですか?
psql
SQLスクリプトファイルにコマンドを含めることはできません。
PSQLプロンプトで、次のことができます。
\connect (or \c) dbname
\l
データベースの場合
\c
DatabaseName \df
は、特定のデータベースに格納されているプロシージャをdbに切り替える
psqlのメタコマンドを使用する \c or \connect [ dbname [ username ] [ host ] [ port ] ] | conninfo
(ドキュメントを参照)。
例: \c MyDatabase
\c
と\connect
メタコマンドでは大文字と小文字が区別されることに注意してください。
起動時に特定のデータベースに切り替えたい場合は、
/Applications/Postgres.app/Contents/Versions/9.5/bin/psql vigneshdb;
デフォルトでは、Postgresはポート5432で実行されます。別のポートで実行される場合は、必ずコマンドラインでポートを渡してください。
/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
、起動時に引数に名前が付いたdbに切り替えます。
質問では明示的に述べられていませんが、目的は特定のスキーマ/データベースに接続することです。
別のオプションは、スキーマに直接接続することです。例:
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.
他の回答で述べたように、別のデータベースを使用するには接続を変更する必要があります。
Postgresはスキーマで動作します。1つのデータベースに複数のスキーマを含めることができます。したがって、同じデータベース内で作業していて、スキーマを変更したい場合は、次のようにします。
SET SCHEMA 'schema_name';
SET SCHEMA
、SET SCHEMA 'schema_name'
not として使用されSET SCHEMA 'database_name'
ます。したがって、これはデータベースではなくスキーマを変更するSQLの方法です。これもに似ていSET search_path TO schema_name
ます。こちらまたはこちらのドキュメントをご覧ください。
psql
さて、これはPostgreSQLのフロントエンドについてです。