postgresql總結

這篇博客主要對PostgreSQL進行總結,內容偏基礎。html

這裏先附上一個PostgreSQL的中文資源:PostgreSQL 8.1 中文文檔。英文很差的同窗能夠看看這個。linux

安裝PostgreSQL

安裝PostgreSQL客戶端
sudo apt-get install postgresql-client
安裝PostgreSQL服務器
sudo apt-get install postgresql
安裝圖形管理界面
sudo apt-get install pgadmin3

PostgreSQL添加新用戶和新數據庫

方法1:PostgreSQL控制檯

鏈接數據庫
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

方法2:使用shell命令行

添加新用戶和新數據庫,除了在PostgreSQL控制檯內,還能夠在shell命令行下完成。這是由於PostgreSQL提供了命令行程序createuser和createdb。仍是以新建用戶dbuser和數據庫exampledb爲例。服務器

建立數據庫用戶dbuser,並指定其爲超級用戶。
sudo -u postgres createuser --superuser dbuser
登陸數據庫控制檯,設置dbuser用戶的密碼,完成後退出控制檯。
sudo -u postgres psql
\password dbuser
\q
建立數據庫exampledb,並指定全部者爲dbuser
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環境下打開中文卻顯示亂碼。

解決方法1

通常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

解決方法2

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 ‘」‘

參考博客

PostgreSQL新手入門

PostgreSQL: 如何處理導出的數據中文顯示亂碼問題?

相關文章
相關標籤/搜索