3 種使用 PostgreSQL 命令的方式
無論你需要的東西簡單(如一個購物清單)亦或複雜(如色卡生成器) ,PostgreSQL 命令都能使它變得容易起來。
在 PostgreSQL 入門一文中, 我解釋瞭如何安裝、設定和開始使用這個開源資料庫軟體。不過,使用 PostgreSQL 中的命令可以做更多事情。
例如,我使用 Postgres 來跟蹤我的雜貨店購物清單。我的大多數雜貨店購物是在家裡進行的,而且每週進行一次大批量的採購。我去幾個不同的地方購買清單上的東西,因為每家商店都提供特定的選品或質量,亦或更好的價格。最初,我製作了一個 HTML 表單頁面來管理我的購物清單,但這樣無法儲存我的輸入內容。因此,在想到要購買的物品時我必須馬上列出全部清單,然後到採購時我常常會忘記一些我需要或想要的東西。
相反,使用 PostgreSQL,當我想到需要的物品時,我可以隨時輸入,並在購物前列印出來。你也可以這樣做。
建立一個簡單的購物清單
首先,輸入 psql
命令進入資料庫,然後用下面的命令建立一個表:
Create table groc (item varchar(20), comment varchar(10));
輸入如下命令在清單中加入商品:
insert into groc values ('milk', 'K');
insert into groc values ('bananas', 'KW');
括號中有兩個資訊(逗號隔開):前面是你需要買的東西,後面字母代表你要購買的地點以及哪些東西是你每週通常都要買的(W
)。
因為 psql
有歷史記錄,你可以按向上鍵在括號內編輯資訊,而無需輸入商品的整行資訊。
在輸入一小部分商品後,輸入下面命令來檢查前面的輸入內容。
Select * from groc order by comment;
item | comment
----------------+---------
ground coffee | H
butter | K
chips | K
steak | K
milk | K
bananas | KW
raisin bran | KW
raclette | L
goat cheese | L
onion | P
oranges | P
potatoes | P
spinach | PW
broccoli | PW
asparagus | PW
cucumber | PW
sugarsnap peas | PW
salmon | S
(18 rows)
此命令按 comment
列對結果進行排序,以便按購買地點對商品進行分組,從而使你的購物更加方便。
使用 W
來指明你每週要買的東西,當你要清除表單為下週的列表做準備時,你可以將每週的商品保留在購物清單上。輸入:
delete from groc where comment not like '%W';
注意,在 PostgreSQL 中 %
表示萬用字元(而非星號)。所以,要儲存輸入內容,需要輸入:
delete from groc where item like 'goat%';
不能使用 item = 'goat%'
,這樣沒用。
在購物時,用以下命令輸出清單並列印或傳送到你的手機:
\o groclist.txt
select * from groc order by comment;
\o
最後一個命令 \o
後面沒有任何內容,將重置輸出到命令列。否則,所有的輸出會繼續輸出到你建立的雜貨店購物檔案 groclist.txt
中。
分析複雜的表
這個逐項列表對於資料量小的表來說沒有問題,但是對於資料量大的表呢?幾年前,我幫 FreieFarbe.de 的團隊從 HLC 調色盤中建立一個自由色的色樣冊。事實上,任何能想象到的列印色都可按色調、亮度、濃度(飽和度)來規定。最終結果是 HLC Color Atlas,下面是我們如何實現的。
該團隊向我傳送了具有顏色規範的檔案,因此我可以編寫可與 Scribus 配合使用的 Python 指令碼,以輕鬆生成色樣冊。一個例子像這樣開始:
HLC, C, M, Y, K
H010_L15_C010, 0.5, 49.1, 0.1, 84.5
H010_L15_C020, 0.0, 79.7, 15.1, 78.9
H010_L25_C010, 6.1, 38.3, 0.0, 72.5
H010_L25_C020, 0.0, 61.8, 10.6, 67.9
H010_L25_C030, 0.0, 79.5, 18.5, 62.7
H010_L25_C040, 0.4, 94.2, 17.3, 56.5
H010_L25_C050, 0.0, 100.0, 15.1, 50.6
H010_L35_C010, 6.1, 32.1, 0.0, 61.8
H010_L35_C020, 0.0, 51.7, 8.4, 57.5
H010_L35_C030, 0.0, 68.5, 17.1, 52.5
H010_L35_C040, 0.0, 81.2, 22.0, 46.2
H010_L35_C050, 0.0, 91.9, 20.4, 39.3
H010_L35_C060, 0.1, 100.0, 17.3, 31.5
H010_L45_C010, 4.3, 27.4, 0.1, 51.3
這與原始資料相比,稍有修改,原始資料用製表符分隔。我將其轉換成 CSV 格式(用逗號分割值),我更喜歡其與 Python 一起使用(CSV 文也很有用,因為它可輕鬆匯入到電子表格程式中)。
在每一行中,第一項是顏色名稱,其後是其 C、M、Y 和 K 顏色值。 該檔案包含 1,793 種顏色,我想要一種分析資訊的方法,以瞭解這些值的範圍。這就是 PostgreSQL 發揮作用的地方。我不想手動輸入所有資料 —— 我認為輸入過程中我不可能不出錯,而且令人頭痛。幸運的是,PostgreSQL 為此提供了一個命令。
首先用以下命令建立資料庫:
Create table hlc_cmyk (color varchar(40), c decimal, m decimal, y decimal, k decimal);
然後通過以下命令引入資料:
\copy hlc_cmyk from '/home/gregp/HLC_Atlas_CMYK_SampleData.csv' with (header, format CSV);
開頭有反斜槓,是因為使用純 copy
命令的許可權僅限於 root 使用者和 Postgres 的超級使用者。在括號中,header
表示第一行包含標題,應忽略,CSV
表示檔案格式為 CSV。請注意,在此方法中,顏色名稱不需要用括號括起來。
如果操作成功,會看到 COPY NNNN
,其中 N 表示插入到表中的行數。
最後,可以用下列命令查詢:
select * from hlc_cmyk;
color | c | m | y | k
---------------+-------+-------+-------+------
H010_L15_C010 | 0.5 | 49.1 | 0.1 | 84.5
H010_L15_C020 | 0.0 | 79.7 | 15.1 | 78.9
H010_L25_C010 | 6.1 | 38.3 | 0.0 | 72.5
H010_L25_C020 | 0.0 | 61.8 | 10.6 | 67.9
H010_L25_C030 | 0.0 | 79.5 | 18.5 | 62.7
H010_L25_C040 | 0.4 | 94.2 | 17.3 | 56.5
H010_L25_C050 | 0.0 | 100.0 | 15.1 | 50.6
H010_L35_C010 | 6.1 | 32.1 | 0.0 | 61.8
H010_L35_C020 | 0.0 | 51.7 | 8.4 | 57.5
H010_L35_C030 | 0.0 | 68.5 | 17.1 | 52.5
所有的 1,793 行資料都是這樣的。回想起來,我不能說此查詢對於 HLC 和 Scribus 任務是絕對必要的,但是它減輕了我對該專案的一些擔憂。
為了生成 HLC 色譜,我使用 Scribus 為色板頁面中的 13,000 多種顏色自動建立了顏色圖表。
我可以使用 copy
命令輸出資料:
\copy hlc_cmyk to '/home/gregp/hlc_cmyk_backup.csv' with (header, format CSV);
我還可以使用 where
子句根據某些值來限制輸出。
例如,以下命令將僅傳送以 H10
開頭的色調值。
\copy hlc_cmyk to '/home/gregp/hlc_cmyk_backup.csv' with (header, format CSV) where color like 'H10%';
備份或傳輸資料庫或表
我在此要提到的最後一個命令是 pg_dump
,它用於備份 PostgreSQL 資料庫,並在 psql
控制檯之外執行。 例如:
pg_dump gregp -t hlc_cmyk > hlc.out
pg_dump gregp > dball.out
第一行是匯出 hlc_cmyk
表及其結構。第二行將轉儲 gregp
資料庫中的所有表。這對於備份或傳輸資料庫或表非常有用。
要將資料庫或表傳輸到另一臺電腦(檢視 PostgreSQL 入門那篇文章獲取詳細資訊),首先在要轉入的電腦上建立一個資料庫,然後執行相反的操作。
psql -d gregp -f dball.out
一步建立所有表並輸入資料。
總結
在本文中,我們瞭解瞭如何使用 WHERE
引數限制操作,以及如何使用 PostgreSQL 萬用字元 %
。我們還了解了如何將大批量資料載入到表中,然後將部分或全部表資料輸出到檔案,甚至是將整個資料庫及其所有單個表輸出。
via: https://opensource.com/article/20/2/postgresql-commands
作者:Greg Pittman 選題:lujun9972 譯者:Morisun029 校對:wxy
訂閱“Linux 中國”官方小程式來檢視
相關文章
- linux安裝postgresql三種方式LinuxSQL
- 更好的 java 重試框架 sisyphus 的 3 種使用方式Java框架
- PostgreSQL-三種關閉方式(二)SQL
- ChatTTS的兩種使用方式TTS
- linux中xargs命令的使用方式Linux
- Linux中source命令的使用方式Linux
- Mac 使用 brew 方式安裝 postgresqlMacSQL
- Spring Bean的3種裝配方式SpringBean
- vue3使用ElementPlus upload上傳檔案的兩種方式Vue
- react-router4.2使用js控制路由跳轉的3種方式ReactJS路由
- Kettle筆記3-三種執行方式:圖形/命令列/API筆記命令列API
- react 路由的幾種使用方式React路由
- springboot使用webSocket的兩種方式Spring BootWeb
- Artisan 命令列 2種實現方式命令列
- 兩種 cp 命令的絕佳用法的快捷方式
- 3 種擴充套件 Kubernetes 能力的方式套件
- 建築工程的3種招標方式
- SQLite 基本命令使用方式SQLite
- vue 元件的三種使用方式教程Vue元件
- Windows從命令列建立文字檔案的兩種方式Windows命令列
- linux系統中xargs命令的使用方式Linux
- Linux中Sleep和Wait命令的使用方式LinuxAI
- Pandas 基礎 (3) - 生成 Dataframe 的幾種方式
- SpringBoot 構建 Docker 映象的最佳 3 種方式Spring BootDocker
- 在本地執行Kubernetes的3種主流方式
- SpringBoot獲取HttpServletRequest的3種方式總結Spring BootHTTPServlet
- Vue3 的8種元件通訊方式Vue元件
- SMSSDK的Unity3D的兩種整合方式Unity3D
- ubuntu建立使用者的兩種方式Ubuntu
- SpringBoot 使用ApplicationContext 及 getbean的兩種方式Spring BootAPPContextBean
- 換種方式使用 Laravel 的 request 驗證Laravel
- 3種方式自動化控制APPAPP
- PostgreSQL-15的 \watch命令SQL
- Map實現執行緒安全的3種方式執行緒
- LoadRunner中多值關聯的3種處理方式
- Angular-3種建立動態內容的方式Angular
- vue3 常用的幾種元件通訊方式Vue元件
- 3種常見的Web前端陣列排序方式!Web前端陣列排序