这篇博客主要对PostgreSQL进行总结,内容偏基础。html
这里先附上一个PostgreSQL的中文资源:PostgreSQL 8.1 中文文档。英文很差的同窗能够看看这个。linux
sudo apt-get install postgresql-client
sudo apt-get install postgresql
sudo apt-get install pgadmin3
sudo su - postgres psql -U user -d dbname
第一步是切换到postgres用户,第二步是登陆到PostgreSQL控制台。当你直接敲psql登陆时,其实是以同名数据库用户的身份登陆数据库。sql
若是一切正常,系统提示符会变为"postgres=#",表示这时已经进入了数据库控制台。如下的命令都在控制台内完成。shell
\password postgres
为postgres用户设置密码,敲下这个命令后,控制台会提示你让你输入新的密码。注意,这里设置的是Linux系统用户postgresql的密码,并不是数据库用户的密码。数据库
CREATE USER dbuser WITH PASSWORD 'password';
CREATE DATABASE exampledb OWNER dbuser;
建立用户数据库,这里为exampledb,并指定全部者为dbuser。windows
GRANT ALL PRIVILEGES ON DATABASE exampledb to dbuser;
\q
添加新用户和新数据库,除了在PostgreSQL控制台内,还能够在shell命令行下完成。这是由于PostgreSQL提供了命令行程序createuser和createdb。仍是以新建用户dbuser和数据库exampledb为例。服务器
sudo -u postgres createuser --superuser dbuser
sudo -u postgres psql \password dbuser \q
sudo -u postgres createdb -O dbuser exampledb
添加新用户和新数据库之后,就要以新用户的名义登陆数据库,这时使用的是psql命令。编辑器
psql -U dbuser -d exampledb -h 127.0.0.1 -p 5432
上面命令的参数含义以下:-U指定用户,-d指定数据库,-h指定服务器,-p指定端口。post
输入上面命令之后,系统会提示输入dbuser用户的密码。输入正确,就能够登陆控制台了。编码
除了前面已经用到的\password命令(设置密码)和\q命令(退出)之外,控制台还提供一系列其余命令。
\h:查看SQL命令的解释,好比\h select。 \?:查看psql命令列表。 \l:列出全部数据库。 \c [database_name]:链接其余数据库。 \d:列出当前数据库的全部表格。 \d [table_name]:列出某一张表格的结构。 \du:列出全部用户。 \e:打开文本编辑器。 \conninfo:列出当前数据库和链接的信息。
基本的数据库操做,就是使用通常的SQL语言。
# 建立新表 CREATE TABLE user_tbl(name VARCHAR(20), signup_date DATE); # 插入数据 INSERT INTO user_tbl(name, signup_date) VALUES('张三', '2013-12-22'); # 选择记录 SELECT * FROM user_tbl; # 更新数据 UPDATE user_tbl set name = '李四' WHERE name = '张三'; # 删除记录 DELETE FROM user_tbl WHERE name = '李四' ; # 添加栏位 ALTER TABLE user_tbl ADD email VARCHAR(40); # 更新结构 ALTER TABLE user_tbl ALTER COLUMN signup_date SET NOT NULL; # 改名栏位 ALTER TABLE user_tbl RENAME COLUMN signup_date TO signup; # 删除栏位 ALTER TABLE user_tbl DROP COLUMN email; # 表格改名 ALTER TABLE user_tbl RENAME TO backup_tbl; # 删除表格 DROP TABLE IF EXISTS backup_tbl; # 给一个字段设置缺省值 ALTER TABLE [表名] ALTER COLUMN [字段名] SET DEFAULT [新的默认值]; # 去除缺省值 ALTER TABLE [表名] ALTER COLUMN [字段名] DROP DEFAULT; # 更改字段类型 ALTER TABLE ALTER COLUMN TYPE;
PostgreSQL自己提供的copy命令能够将数据导成csv格式。可是在某些Linux环境下导出的csv文件,传输到windows环境下打开中文却显示乱码。
通常PostgreSQL建库都是用的UTF8字符集,在UTF8字符集状况下若是中文不能正常显示,能够设置客户端字符集,修改为"GBK" ,命令以下
--修改客户端字符集 postgres=# show client_encoding; client_encoding ----------------- UTF8 (1 row) postgres=# set client_encoding='GBK'; SET --copy 导出数据到 GBK 编码类型的 csv 文件 skytf=# copy skytf.test_2 to '/home/postgres/script/tf/skytf.test_2.csv' with csv header; COPY 1000000
iconv是linux命令,用来转换文件的编码的,手册解释以下"Convert encoding of given files from one encoding to another",咱们可使用iconv命令转换文件的编码,若是 utf8编码的文件中文显示为乱码,可使用iconv命令将UTF8格式文件转换成gb18030。
--导出数据到 utf8 编码类型文件。 skytf=# set client_encoding='UTF8'; SET skytf=# show client_encoding; client_encoding ----------------- UTF8 (1 row) skytf=# copy skytf.test_2 to '/home/postgres/script/tf/skytf.test_2.csv' with csv header; COPY 1000000 --将文件编码由 utf8 转换成 gb18030 iconv -f utf-8 -t gb18030 skytf.test_2.csv -o skytf.test_2_gbk.csv
\copy table to data.csv delimiter as ‘,’ csv quote as ‘”‘
\copy table from data.csv delimiter as ‘,’ csv quote as ‘”‘