這篇博客主要對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 ‘」‘