psql 是什麼psql 連線 PostgreSQLpsql 指令前幾天已經成功使用 Docker 建立 PostgreSQL Container,也透過 Volume 將資料保存下來。
但目前 PostgreSQL 雖然正在執行,我們還沒有真正「進入」資料庫操作。
今天要使用 PostgreSQL 提供的 psql。
psql 是 PostgreSQL 的命令列工具,可以透過終端機連線到 PostgreSQL,並執行 SQL 指令。
整個流程可以想成:
Docker
↓
PostgreSQL Container
↓
psql
↓
PostgreSQL Database
首先使用:
docker ps
確認 my-postgres 是否正在執行。
如果 Container 已經停止,可以重新啟動:
docker start my-postgres
再次輸入:
docker ps
確認狀態是否顯示為 Up。
如果前面使用的是預設的 postgres 使用者,可以輸入:
docker exec -it my-postgres psql -U postgres
這行指令可以拆開來看:
docker exec:在正在執行的 Container 中執行指令-it:讓我們可以在終端機中互動操作my-postgres:Container 名稱psql:啟動 PostgreSQL 命令列工具-U postgres:使用 postgres 使用者登入成功後會看到類似:
postgres=#
看到這個畫面,就代表已經成功進入 PostgreSQL。
Day 15 曾經設定:
POSTGRES_USER=myuser
POSTGRES_DB=mydb
這時可以使用:
docker exec -it my-postgres psql -U myuser -d mydb
其中:
-U → 指定使用者
-d → 指定 Database
成功後就可以開始操作自己的資料庫。
進入 PostgreSQL 後,可以先嘗試幾個基本指令。
查看目前有哪些 Database:
\l
查看目前連線資訊:
\conninfo
查看目前 Database 中的資料表:
\dt
離開 psql:
\q
要注意,像 \l、\dt、\q 這些是 psql 的指令,不是一般的 SQL 語法。
這兩個很容易搞混。
例如:
SELECT * FROM users;
這是 SQL。
而:
\dt
則是 psql 提供的指令。
可以簡單理解成:
psql
│
├── \l、\dt、\q → psql 指令
│
└── SELECT、INSERT → SQL 指令
之後就會開始真正使用 SQL 建立 Database 和 Table。
docker exec 執行失敗 → ✅ 確認 PostgreSQL Container 是否正在執行POSTGRES_USER
\l 查看目前有哪些 Database\dt 當成 SQL → ✅ \dt 是 psql 提供的指令\q
docker ps 確認 PostgreSQL 狀態docker exec 進入 PostgreSQL\l 查看 Database\conninfo 查看連線資訊\dt 查看資料表\q 離開 psql今天第一次真正進入 Docker 裡面的 PostgreSQL,之前雖然已經成功建立 Container,但都只是在 Docker 外面查看它是否正常執行。
透過 docker exec 和 psql 之後,終於可以直接操作 PostgreSQL。剛開始看到 postgres=# 的畫面有點陌生,但實際使用 \l、\dt 和 \q 後,發現操作方式沒有想像中困難。
現在 Docker 已經不只是幫我把 PostgreSQL 跑起來,而是真的可以進入資料庫進行操作。接下來就可以開始建立自己的 Database 和 Table,正式進入 SQL 的實際操作。