postgresql命令
在PostgreSQL入门中 ,我解释了如何安装,设置和开始使用开源数据库软件。 但是您可以在PostgreSQL中使用命令做更多的事情。
取而代之的是,使用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)
此命令通过注释列对结果进行排序,以便按购买地点对项目进行分组,以使其更易于购物。
通过使用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 (之后没有任何内容)会将输出重置为命令行。 否则,所有输出将继续转到您创建的groc文件。
分析复杂表
短表可以逐项输入,但真正的大表又如何呢? 几年前,我曾帮助FreieFarbe.de的团队从其HLC调色板中创建自由颜色的色板样本(freieFarbe表示德语中的“自由颜色”),实际上,任何可以想象得到的印刷颜色都可以由其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);
开头有反斜杠,因为使用纯复制命令仅限于root用户和Postgres超级用户。 在括号中, 标头表示第一行包含标题,应忽略,而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数据库内的所有表。 这对于备份或传输数据库或表非常有用。
要将数据库或表转移到另一台计算机,首先,在另一台计算机上创建数据库(有关详细信息,请参见我的“ 入门 ”文章),然后执行相反的过程:
psql -d gregp -f dball.out
这将创建所有表并一步输入数据。
结论
在本文中,我们已经了解了如何使用WHERE参数来限制操作,以及如何使用PostgreSQL通配符% 。 我们还看到了如何将大量数据加载到表中,然后将部分或全部表数据输出到文件,甚至是整个数据库及其所有单个表。
翻译自: https://opensource.com/article/20/2/postgresql-commands
postgresql命令