PostgreSQL笔记(Windows)

目录

可能会在未来进行追加。

设置环境变量

在环境变量中设置PostgreSQL的执行环境,可以使您能够在任何地方操作PostgreSQL。

如果要手动设置的话

image.png
psql --version

如果能够显示如下内容,则表示成功。

C:\>psql --version
psql (PostgreSQL) 15.0

若以命令指定的情况下

image.png
setx /m path "%path%;C:\Program Files\PostgreSQL\15\bin"

请在任意位置打开“命令提示符”或“PowerShell”,执行以下命令来确认是否可以使用PostgreSQL。

psql --version

只要显示如下,就表示成功。

C:\>psql --version
psql (PostgreSQL) 15.0

如果要设置批处理文件,或者临时指定的话

如果您不想使用批处理文件进行设置或保存环境变量,您可以使用以下命令进行临时指定。

set path=%path%;"C:\Program Files\PostgreSQL\15\bin"

检查、停止、启动和重新启动PostgreSQL服务的状态。

image.png

确认 PostgreSQL 服务的状态

pg_ctl.exe status -D "C:\Program Files\PostgreSQL\15\data"

如果显示如下,则表示成功。

C:\WINDOWS\system32>pg_ctl.exe status -D "C:\Program Files\PostgreSQL\15\data"
pg_ctl: サーバーが動作中です(PID: 6452)
C:/Program Files/PostgreSQL/15/bin/postgres.exe "-D" "C:\Program Files\PostgreSQL\15\data"

停止PostgreSQL服务

可以使用以下命令停止服务。

pg_ctl.exe stop -D "C:\Program Files\PostgreSQL\15\data"

如果显示如下,则表示成功。

C:\WINDOWS\system32>pg_ctl.exe stop -D "C:\Program Files\PostgreSQL\15\data"
サーバー停止処理の完了を待っています....完了
サーバーは停止しました

顺便提一下,在执行服务确认命令时会显示如下内容。

C:\WINDOWS\system32>pg_ctl.exe status -D "C:\Program Files\PostgreSQL\15\data"
pg_ctl: サーバーが動作していません

以下是另一种选择,可以在“-m”后指定选项来运行:
如果指定为“smart”,则在等待所有客户端断开连接后停止数据库。

pg_ctl.exe stop -m smart -D "C:\Program Files\PostgreSQL\15\data"

当指定为「fast」时,将会强制回滚所有正在进行中的事务,并断开客户端连接,停止执行。

pg_ctl.exe stop -m fast -D "C:\Program Files\PostgreSQL\15\data"

如果指定了「immediate」,则会立即停止服务器进程(在重新启动数据库时执行恢复处理)。

pg_ctl.exe stop -m immediate -D "C:\Program Files\PostgreSQL\15\data"

你也可以用以下的方式来停止。

net status postgresql-x64-XX

请指定任意版本的PostgreSQL。

net stop postgresql-x64-15

如果显示如下,则表示成功。

C:\WINDOWS\system32>net stop postgresql-x64-15
postgresql-x64-15 - PostgreSQL Server 15 サービスを停止中です.
postgresql-x64-15 - PostgreSQL Server 15 サービスは正常に停止されました。

启动PostgreSQL服务

服务可以通过以下命令启动。

pg_ctl.exe start -D "C:\Program Files\PostgreSQL\15\data"

如果显示如下,则表示成功。

C:\WINDOWS\system32>pg_ctl.exe start -D "C:\Program Files\PostgreSQL\15\data"
サーバーの起動完了を待っています....2023-02-19 23:33:52.681 JST [10064] LOG:  redirecting log output to logging collector process
2023-02-19 23:33:52.681 JST [10064] HINT:  Future log output will appear in directory "log".
完了
サーバー起動完了

如果执行服务确认命令,将显示以下内容。

C:\WINDOWS\system32>pg_ctl.exe status -D "C:\Program Files\PostgreSQL\15\data"
pg_ctl: サーバーが動作中です(PID: 10064)
C:/Program Files/PostgreSQL/15/bin/postgres.exe "-D" "C:/Program Files/PostgreSQL/15/data"

你可以用下面的方法启动。

net start postgresql-x64-XX

请在下方选择任意的 PostgreSQL 版本。

net start postgresql-x64-15

如果显示如下,则表示成功。

C:\WINDOWS\system32>net start postgresql-x64-15
postgresql-x64-15 - PostgreSQL Server 15 サービスを開始します..
postgresql-x64-15 - PostgreSQL Server 15 サービスは正常に開始されました。

重新启动PostgreSQL服务

可以使用以下命令启动服务。

pg_ctl.exe reload -D "C:\Program Files\PostgreSQL\15\data"

如果显示如下内容,则表示成功。

C:\WINDOWS\system32>pg_ctl.exe reload -D "C:\Program Files\PostgreSQL\15\data"
サーバーにシグナルを送信しました

顺便说一下,当执行服务确认命令时,会显示如下内容。

C:\WINDOWS\system32>pg_ctl.exe status -D "C:\Program Files\PostgreSQL\15\data"
pg_ctl: サーバーが動作中です(PID: 9840)
C:/Program Files/PostgreSQL/15/bin/postgres.exe "-D" "C:\Program Files\PostgreSQL\15\data"

批量执行SQL

这是一个批处理运行SQL的方法。

image.png
-- DB作成
create database test;

-- 接続先dbをtestに変更
\c test

-- エンコード変更
set client_encoding to 'utf8';
-- エンコードを確認
select current_setting('client_encoding');

-- ユーザ作成
create user testuser login password 'testuser' createdb;

begin;
create schema if not exists test_schema; 
create table if not exists test_schema.user_infomation( 
    id varchar (5) not null
    , name varchar (10) not null
    , gender numeric (1) not null
    , hometown varchar (50)
    , primary key (id)
); 
comment on table test_schema.user_infomation is 'ユーザー情報テーブル'; 
comment on column test_schema.user_infomation.id is 'id'; 
comment on column test_schema.user_infomation.name is '名前'; 
comment on column test_schema.user_infomation.gender is '性別'; 
comment on column test_schema.user_infomation.hometown is '出身地';
commit;

-- スキーマ所持者変更
alter schema test_schema owner to testuser;

-- 権限付与
grant postgres to testuser;

连接到数据库的方法是使用以下命令:「psql -h “主机名” -p “端口号” -U “用户名”」。
您可以使用「-f “文件名”」执行在文件中编写的SQL语句。
您可以使用「set PGPASSWORD=”密码”」命令指定密码。

@echo off
rem 環境変数の設定
set path=%path%;C:\Program Files\PostgreSQL\15\bin

rem ホスト名
set HOST=localhost

rem ポート番号
set PORT=5432

rem ユーザ名
set USER=postgres

rem パスワード
set PGPASSWORD=password

psql -h %HOST% -p %PORT% -U %USER% -f ./init.sql

pause
image.png

创建一个类似的批处理文件,用于确认上述结果。
“-d“参数可用于指定要连接的数据库。
“-c“参数可用于指定要执行的命令以连接到目标数据库。

@echo off
rem 環境変数の設定
set path=%path%;C:\Program Files\PostgreSQL\15\bin

rem ホスト名
set HOST=localhost

rem ポート番号
set PORT=5432

rem ユーザ名
set USER=postgres

rem ユーザ名
set DB=test

rem パスワード名
set PGPASSWORD=password

psql -h %HOST% -p %PORT% -U %USER% -d %DB% -c "\dt test_schema.*"

pause
image.png

表格数据的导入和导出

关于如何将CSV格式的数据导入到表中(将数据插入表中)并以CSV格式输出表中的数据的方法。

引入

我们假设将以下CSV数据插入到「用户信息」表中。

id,name,gender,hometown
1,太郎,1,東京
2,花子,2,大阪

执行导入命令的方式如下:
“copy “任意的表名” from ‘输出CSV文件的绝对路径’ delimiter ‘,’ csv header;“

copy user_infomation from 'c:/db/import/csv/user_infomation.csv' delimiter ',' csv header;
image.png

输出

假设我们要将 “user_information” 表的数据导出为CSV文件。
执行导出命令如下:
“copy 任意的表名 to ‘绝对路径/读取CSV文件名’ delimiter ‘,’ csv header;”

copy test_schema.user_infomation to 'c:/db/export/csv/user_infomation.csv' delimiter ',' csv header;

如果输出一个类似以下格式的CSV文件,表示成功。

id,name,gender,hometown
1,太郎,1,東京
2,花子,2,大阪

※未来可能会补充

请原汁原味地为我提供以下内容的中文释义,只需要一种选项:

参考

 

广告
将在 10 秒后关闭
bannerAds