PostgreSQL 安装及几个常用命令摘录 及 常见问题

本文详细介绍了PostgreSQL的安装过程及基本操作,包括解压、配置环境变量、建立数据库目录、启动数据库引擎、创建用户和数据库,以及数据的导出与导入。此外,还提供了SQL语法示例,如创建表、插入数据、查看数据和删除表。最后,对psql命令行工具的功能和使用进行了说明,包括其命令行选项和后期命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注意: 如果你是安装好PostgreSQL,默认只有一个数据库用户 postgres (不包含root)

            PostgreSQL的所有命令都是针对某一个用户的,比如默认情况下,只有 postgres 用户才有数据库,也只有该用户对数据的操作有意义

            更改用户命令: # su postgres


安装的过程并不复杂和其他源码版本的安装方法类似:
解压到 /usr/local/src:
# tar xvfz postgresql-7.1.3.tar.gz
# cd postgresql-7.1.3
# ./configure --prefix=/usr/local/pgsql
# make
# make install
# chown -R postgre.postgre /usr/local/pgsql

这样安装完毕后,并不是万事大吉了,还有一些收尾工作要做:
# vi ~postgre/.bash_profile
添加:(路径依据个人情况修改)

PGLIB=/usr/local/pgsql/lib
PGDATA=$HOME/data
PATH=$PATH:/usr/local/pgsql/bin
MANPATH=$MANPATH:/usr/local/pgsql/man
export PGLIB PGDATA PATH MANPATH


以 postgres 用户登录,
# su - postgre
建立数据库目录:
$ mkdir data

启动数据库引擎:

$ initdb
[postgre@www postgre]$ initdb
。。。
Success. You can now start the database server using:

/usr/local/pgsql/bin/postmaster -D /home/postgre/data
or
/usr/local/pgsql/bin/pg_ctl -D /home/postgre/data start


$ postmaster -i -D ~/data &
[1] 22603
[postgre@www postgre]$ DEBUG: Data Base System is starting up at Thu Jan 31 02:00:44 2002
DEBUG: Data Base System was shut down at Thu Jan 31 01:57:58 2002
DEBUG: Data Base System is in production state at Thu Jan 31 02:00:44 2002

这样 PostgreSQL 使用位于 /usr/local/pgsql/data 的数据库,允许 Internet 用户的连接( -i ) ,并在后台运行。

 

 

创建一个用户:

   #su
  #su postgres
  #createuser <new-user>

 

 如何导出PostgreSQL数据库中的数据:
  #pg_dump -U postgres -f dump.sql mydatabase
具体某个表
#pg_dump -U postgres -t mytable -f dump.sql mydatabase

导入数据时首先创建数据库再用psql导入
  #createdb newdatabase
 #psql -d newdatabase -U postgres -f dump.sql

通常状况下,psql 提供一个带有 psql 正在与之联接的接数据库名的,后缀 "=>" 的提示符.例如.

$ psql testdb







SQL几个语法



创建一个表格

CREATE TABLE villes (

ville varchar(80) primary key,

emplacement point

);



插入数据

INSERT INTO villes VALUES ('San Francisco', '(-194.0, 53.0)');



查看表格数据

SELECT * FROM villes;



删除表格

DELETE FROM nom_table










命令行选项

psql 可接受下面的命令行选项:

-A
当打印输出表元素时关闭填充对齐.
-c query
声明 psql 将执行一条查询字串,query, 然后退出.这一点对shell 脚本很有用,尤其是在 shell 脚本里与-q 选项相联时.
-d dbname
声明要联接的数据库名.等效于将 dbname 作为命令行最后一个域输出.
-e
回现送给后端的查询
-f filename
使用 filename 作为查询的语句源而不是交互式读入查询,该文件必须为客户前端可见.
-F separator
使用 separator 作为域分隔符.缺省是一个 ASCII 竖直条 ("|").
-h hostname
声明正在运行 postmaster 的主机名.如果没有此选项,将使用本地的Unix主控套接字进行通讯.
-H
打开 HTML 3.0 格式输出.
-l
列出所有可用的数据库,然后退出.其他非连接选项将被忽略.
-n
不使用用于输入行编辑和命令历史的行输入库.
-o filename
将所有输出定向到文件 filename. 路径必须是客户端可写的.
-p port
声明被 postmaster 用于侦听的 TCP/IP 端口或使用的缺省本地Unix主控套接字文件句柄.缺省的是环境变量 PGPORT 的值(如果存在的话)或者是5432.
-q
声明 psql 将"安静地"执行处理任务.缺省时psql将打印欢迎和退出信息,并且提示输入每个查询和打印输出查询返回的行数.如果使用了此选项,这些都不出现.这在和 -c 选项一起使用时很有效.
-s
进入单步模式运行,这时每个查询在发往后端之前都要提示用户.
-S
进入单行运行模式,这时每个查询都将由换行符结束,而不是分号.
-t
关闭打印列/字段名.这在shell脚本中与 -c 选项一起使用时有用.
-T table_options
允许你使用 HTML 3.0 格式输出时声明放在表 table ... 中的标记选项.例如,border 将给你的表边框.这个选项必须与 -H 选项一起使用.
-u
在和数据库联接之前询问用户的用户名和口令.如果数据库不需要口令认证则这些将被忽略.如果此选项没有使用(而且没有设置 PGPASSWORD 环境变量)而数据库又需要口令认证,则联接失败.用户名将被忽略.
-x
打开扩展行格式模式.当此选项有效时每一行都将把列/字段名打印在左边而把列/字段值放在右边.这对于那些难以在一行输出的超长行特别有用.HTML 行输出也支持此模式.

你可以通过设置环境变量来避免在命令行上键入这些参数,参阅下面环境变量的部分.

psql 后期命令

你在 psql 里输入的任何以脱字符反斜杠('/')开头的东西都是psql 后期命令.其他的都是 SQL 并且只是简单的进入当前的查询缓冲 (并且一旦你已经有了一个完整的查询,该查询将自动提交给后端).psql 后期命令也叫斜杠命令.

一个 psql 命令的格式是反斜杠后面紧跟一个命令动词,然后是任意参数.参数与命令动词和其他参数以任意个空白字符间隔.

由于历史原因,对于单字符的命令动词,你实际上不需要用空白字符将命令动词和参数分隔开.不过你最好还是加上空白字符.

下列后期命令是已定义的.

/a
在打印表元素时切换字段对齐模式(开或关).
/C caption
将 HTML3.0 表标题设为 “caption ”.
/connect dbname [ username ]
与一个新的数据库建立一个联接,如果没有声明 username 则使用缺省值.前面的联接将关闭.
/copy dbname { FROM | TO } filename
执行前端(客户端)拷贝.这是一个运行 SQL COPY 命令的操作,不同的是 SQL COPY 是后端在读写声明的文件,并且对应的需要后端访问和特殊的用户权限,而在此命令中 psql 读写文件并将数据从后端中取出或写入.将使用缺省的分隔符.
 

小技巧: 此操作不象 SQL COPY 命令这样高效,因为所有数据必须通过(客户/服务器))client/server IP 或套接字联接.对于大数据量的操作,另一种方法(SQL COPY)更可行.

/d [ table ]
列出数据库中的表,或(如果声明了)表 table 的列/字段.如果表名是用统配符 (“*”)声明的,列出所有表和表的列/字段信息.
/da
列出所有可用聚集.
/dd object
列出 pg_description 里对声明的对象的描述,对象可以是一个表,表中的列/字段,类型,操作符或聚集.
小技巧: 并非所有对象在 pg_description 里有描述.此后期命令在快速获取 Postgres 内部特性时很有用.
/df
列出函数.
/di
只列出索引.
/do
只列出操作符.
/ds
只列出序列.
/dS
列出系统表和索引.
/dt
只列出非系统表.
/dT
列出类型.
/e [ filename ]
编辑当前查询缓冲或文件 filename 的内容.
/E [ filename ]
编辑当前查询缓冲或文件 filename 的内容并且在编辑结束后执行之.
/f [ separator ]
设置域分隔符.缺省是单个空白.
/g [ { filename | |command } ]
将当前查询输入缓冲送给后端并且(可选的)将输出放到 filename 或通过管道将输出送给一个分离的Unix shell 用以执行 command.
/h [ command ]
给出声明的 SQL 命令的语法帮助.如果 command 不是一个定义的 SQL 命令(或在 psql 里没有文档),或没有声明 command ,这时 psql 将列出可获得帮助的所有命令的列表.如果命令 command 是一个通配符(“*”),则给出所有 SQL 命令的语法帮助.
/H
切换 HTML3 输出.等效于 -H 命令行选项.
/i filename
从文件 filename 中读取查询到输入缓冲.
/l
列出服务器上所有数据库.
/m
切换老式监视器样的表输出,这时表周围有边界字符包围着.这是标准 SQL 输出.缺省时,psql 只包括列/字段间的分隔符.
/o [ { filename | |command } ]
将后面的查询结果输出到文件 filename 或通过管道将后面结果输出到一个独立的Unix shell 里执行 command. 如果没有声明参数,将查询结果输出到 stdout.
/p
打印当前查询缓冲区.
/q
退出 psql 程序.
/r
重置(清空)查询缓冲区.
/s [ filename ]
将命令行历史打印出或是存放到 filename. 如果省略 filename ,将不会把后继的命令存放到历史文件中.此选项只有在 psql 配置成使用输入行时才有效.
/t
切换输出的列/字段名的信息头和行记数脚注(缺省是开).
/T table_options
允许你在使用HTML 3.0 格式输出时声明放在表 table ... 中的标记选项.例如,border 将给你的表以边框.这必须和 /H 后期命令一起使用.
/x
切换扩展行格式.当打开时,每一行将在左边打印列/字段名而在右边打印列/字段值.这对于那些不能在一行输出的超长行是很有用的.HTML 行输出模式也支持这个标记.
/w filename
将当前查询缓冲区输出到文件 filename.
/z
生成一个带有正确 ACL(赋予/禁止 权限)的数据库中所有表的输出列表.
/! [ command ]
回到一个独立的Unix shell或执行一个Unix 命令 command.
/?
获得关于反斜杠 (“/”) 命令的帮助.

 

 

常见问题:

1。你已经安装好postgresql且运行,但是还是不能链接到数据库,那可能你没有配置PGLIB等信息,可以回到本文前面试一下

 

2.  如果配置都ok,而且数据库手动可启动,但是用 psql,活在createdb等命令却提示无法链接数据库点错误并且还带有 端口5433 (只要不是5432的),可基本肯定你装过postgresql,而且没有删除干净现在又重新安装了一遍。

解决方法是:找到 /etc/postgresql/8.3/main/postgresql.conf (路径依个人情况而定),然后搜索 port 的那行,改为5432 ,保存重新启动postgresql服务器。


 

 

如果大家还有其他经验可以回复,我会贴上来然大家借鉴

 

 

参考资料:

http://www.lslnet.com/linux/books/postgreSQL/app-psql.htm

http://blog.youkuaiyun.com/zzw45/archive/2004/07/22/48513.aspx

















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值