PostgreSQL笔记(Windows)
目录
可能会在未来进行追加。
设置环境变量
在环境变量中设置PostgreSQL的执行环境,可以使您能够在任何地方操作PostgreSQL。
如果要手动设置的话
psql --version
如果能够显示如下内容,则表示成功。
C:\>psql --version
psql (PostgreSQL) 15.0
若以命令指定的情况下
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服务的状态。
确认 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的方法。
-- 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
创建一个类似的批处理文件,用于确认上述结果。
“-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
表格数据的导入和导出
关于如何将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;
输出
假设我们要将 “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,大阪
※未来可能会补充
请原汁原味地为我提供以下内容的中文释义,只需要一种选项:
参考