導航:首頁 > 程序命令 > 命令行連接postgresql

命令行連接postgresql

發布時間:2023-05-10 10:35:56

Ⅰ 如何用命令打開postgresql資料庫

F:\PostgreSQL\9.2\bin>psql.exe -h localhost -U postgres -d Test -p 5432psql (9.2.4)輸入 "help" 來獲取幫助信息.Test=#Test=# help;您正在使用psql, 這是一種用於訪問PostgreSQL的命令行界面鍵入: \right 顯示發行條款 \h 顯示 SQL 命令的說明 \? 顯示 pgsql 命令的說明 \g 或者以分號(;)結尾以執行查詢 \q 退出注: 資料庫名稱區分大小寫的。使用某些有密碼的用戶的情況下, 會提示輸入密碼.F:\PostgreSQL\9.2\bin>psql.exe -h localhost -U test -d Test -p 5432用戶 test 的口令:psql (9.2.4)輸入 "help" 來獲取幫助信息.Test=#

linux怎麼用命令登陸postgres

(1)用戶實用程序:

createdb 創建一個新的PostgreSQL的資料庫(和SQL語句:CREATE DATABASE 相同)

createuser 創建一個新的PostgreSQL的用戶(和SQL語句:CREATE USER 相同)

dropdb 刪除資料庫

dropuser 刪除用戶

pg_mp 將PostgreSQL資料庫導出到一個腳本文件

pg_mpall 將所有的PostgreSQL資料庫導出到一個腳本文件

pg_restore 從一個由pg_mp或pg_mpall程序導出的腳本文件中恢復PostgreSQL資料庫

psql 一個基於命令行的PostgreSQL互動式客戶端程序

vacuumdb 清理和分析一個PostgreSQL資料庫,它是客戶端程序psql環境下SQL語句VACUUM的shell腳本封裝,二者功能完全相同

(2)系統實用程序

initdb 創建一個用於存儲資料庫的PostgreSQL數據目錄,並創建預定義的模板資料庫template0和template1,生成共享目錄表 catalog;此程序通常只在安裝PostgreSQL時運行一次

initlocation 創建一個輔助的PostgreSQL資料庫存儲區域

ipcclean 從停止的PostgreSQL伺服器中清除共享內在和孤立信號標志

pg_ctl 啟動、停止、重啟PostgreSQL服務(比如:pg_ctl start 啟動PostgreSQL服務,它和service postgresql start相同)

pg_controldata 顯示PostgreSQL服務的內部控制信息

postgres PostgreSQL單用戶模式的資料庫服務

postmaster PostgreSQL多用戶模式的資料庫服務

4.這裡面最重要的是psql這個客戶端程序最為重要。啟用客戶端程序psql的方法是:

切換到PostgreSQL預定義的資料庫超級用戶postgres,啟用客戶端程序psql,並連接到自己想要的資料庫,比如說:

psql template1

出現以下界面,說明已經進入到想要的資料庫,可以進行想要的操作了。

template1=#

5.在資料庫中的一些命令:

template1=# \l 查看系統中現存的資料庫

template1=# \q 退出客戶端程序psql

template1=# \c 從一個資料庫中轉到另一個資料庫中,如template1=# \c sales 從template1轉到sales

template1=# \dt 查看錶

template1=# \d 查看錶結構

template1=# \di 查看索引
[基本資料庫操作]========================
*創建資料庫:
create database [資料庫名];

*查看資料庫列表:
\d

*刪除資料庫:
drop database [資料庫名];

創建表:
create table ([欄位名1] [類型1] <references 關聯表名(關聯的欄位名)>;,[欄位名2] [類型2],......<,primary key (欄位名m,欄位名n,...)>;);

*查看錶名列表:
\d

*查看某個表的狀況:
\d [表名]

*重命名一個表:
alter table [表名A] rename to [表名B];

*刪除一個表:
drop table [表名];
========================================

[表內基本操作]==========================
*在已有的表裡添加欄位:
alter table [表名] add column [欄位名] [類型];

*刪除表中的欄位:
alter table [表名] drop column [欄位名];

*重命名一個欄位:
alter table [表名] rename column [欄位名A] to [欄位名B];

*給一個欄位設置預設值:
alter table [表名] alter column [欄位名] set default [新的默認值];

*去除預設值:
alter table [表名] alter column [欄位名] drop default;

在表中插入數據:
insert into 表名 ([欄位名m],[欄位名n],......) values ([列m的值],[列n的值],......);

修改表中的某行某列的數據:
update [表名] set [目標欄位名]=[目標值] where [該行特徵];

刪除表中某行數據:
delete from [表名] where [該行特徵];
delete from [表名];--刪空整個表

6.要注意隨時對資料庫進行清理、收回磁碟空間並更新統計信息,使用下面的命令就搞定!

vaccumdb -d sales -z

-a 對所有的資料庫操作

-z 保證不斷地刪除失效的行,節約磁碟空間,將統計信息更新為最近的狀態

7.PostgreSQL用戶認證

PostgreSQL數據目錄中的pg_hba.conf的作用就是用戶認證,可以在/var/lib/pgsql/data中找到。

有以下幾個例子可以看看:

(1)允許在本機上的任何身份連接任何資料庫

TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD

local all all trust(無條件進行連接)

(2)允許IP地址為192.168.1.x的任何主機與資料庫sales連接

TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD

host sales all 192.168.1.0 255.255.255.0 ident sameuser(表明任何操作系統用戶都能夠以同名資料庫用戶進行連接)

8.看了那麼多,來一個完整的創建PostgreSQL資料庫用戶的示例吧

(1)進入PostgreSQL高級用戶

(2)啟用客戶端程序,並進入template1資料庫

psql template1

(3)創建用戶

template1=# CREATE USER hellen WITH ENCRYPED PASSWORD'zhenzhen'

(4)因為設置了密碼,所以要編輯pg_hba.conf,使用戶和配置文件同步。

在原有記錄上面添加md5

local all hellen md5

(4)使用新用戶登錄資料庫

template1=# \q

psql -U hellen -d template1

PS:在一個資料庫中如果要切換用戶,要使用如下命令:

template1=# \!psql -U tk -d template1

9.設定用戶特定的許可權

還是要用例子來說明:

創建一個用戶組:

sales=# CREATE GROUP sale;

添加幾個用戶進入該組

sales=# ALTER GROUP sale ADD USER sale1,sale2,sale3;

授予用戶級sale針對表employee和procts的SELECT許可權

sales=# GRANT SELECT ON employee,procts TO GROUP sale;

在sale中將用戶user2刪除

sales=# ALTER GROP sale DROP USER sale2;

10.備份資料庫

可以使用pg_mp和pg_mpall來完成。比如備份sales資料庫:

pg_mp sales>/home/tk/pgsql/backup/1.bak

Ⅲ 怎麼在windows上連接postgres

1、windows下postgresql的安裝
我下載的為xxx9.2.exe一路默認安裝即可。安裝位置為C:\Program Files\PostgreSQL。
安裝完畢後,在dos下執行命令
>net user
列出當前系統用戶名稱。我的用戶名為Administrator。
>psql –U Administrator –d postgres
該命令表示通過資料庫用戶Administrator連接資料庫postgres。
l 若顯示psql不是內部或外部命令,則說明postgresql的bin文件路徑沒添加到windows系統中,右擊「我的電腦」->」屬性」->」高級」->」環境變數」->」Administrator」的用戶變數,選中「PATH」,點擊編輯,將」C:\Program Files\PostgreSQL\9.2\bin」添加進去,注意與前面的路徑用」;」隔開。電腦重啟生效。
l 若顯示角色Administrator不存在,則必須在postgresql資料庫中添加該用戶才能使其可以登錄。
在postgresql中
查詢系統用戶
postgres=#select* from pg_user;
查詢系統中的資料庫
postgres=#select* from pg_database;
說明一下:「template1」是Postgresql在初始化時自動創建的測試資料庫。

創建postgresql資料庫Administrator用戶
方式1

在PostgreSQL中創建用戶postgreSQL用戶Administrator

用SQL Shell(psql)通過用戶postgres登錄PostgreSQL,創建用戶Administrator,
postgres=#create user 「Administrator」;
方式2

通過windows下dos創建postgresql用戶Administrator

將PostgreSQL文件夾bin路徑添加到系統環境中後重啟生效.
通過windows下dos創建postgresql用戶是區分大小寫的。

配置客戶機訪問
為了配置遠程主機和用戶可以連接到PostgreSQL服務,你需要pg_hba.conf文件。文件包含大量注釋記錄用於遠程訪問的選項。在我們的安裝示例中,我們允許區域網中任何主機的任何用戶訪問伺服器上的資料庫。為了達到這個目的,我們添加以下的一行記錄到文件尾:
host all all 192.168.0.0/16 trust
這意味著所有IP地址由192.168開始的計算機可以訪問所有的資料庫。最簡單的使配置生效的方法就是重啟伺服器。
在dos下操作,通過createuser –Uolser –P newuser來創建。
比如我們想創建postgresql資料庫用戶Administrator。
>createuser –U postgre –P Administrator
這樣創建的資料庫用戶Administrator沒有創建資料庫的權利,可以通過pgAdmin III登錄進行查看。
若使其可以創建資料庫可以參照下面內容進行設置:
>createuser –U postgre –s Administrator
這樣具有創建資料庫能力。

createuser的用法可以通過在dos中輸入createuser –help查看。
MicrosoftWindows XP [版本 5.1.2600]
(C)版權所有 1985-2001 Microsoft Corp.

C:\Documentsand Settings\Administrator>createuser --help
createuser創建一個新的 PostgreSQL 用戶.

使用方法:
createuser [選項]... [用戶名]

選項:
-c, --connection-limit=N 角色的連接限制(預設: 沒有限制)
-d, --createdb 此角色可以創建新資料庫
-D, --no-createdb 此角色不可以創建新資料庫(默認)
-e, --echo 顯示發送到服務端的命令
-E, --encrypted 口令加密存儲
-i, --inherit 角色能夠繼承它所屬角色的許可權
(這是預設情況)
-I, --no-inherit 角色不繼承許可權
-l, --login 角色能夠登錄(這是預設情況)
-L, --no-login 角色不能登錄
-N, --unencrypted 口令不加密存儲
-P, --pwprompt 給新角色指定口令
-r, --createrole 這個角色可以創建新的角色
-R, --no-createrole 這個角色沒有創建其它角色的許可權(默認)
-s, --superuser 角色將是超級用戶
-S, --no-superuser 角色不能是超級用戶(默認)
-V, --version 輸出版本信息, 然後退出
--interactive 提示缺少角色名及其屬性
而不是使用默認值
--replication 角色能啟動復制
--no-replication 角色不能啟動復制
-?, --help 顯示此幫助, 然後退出

聯接選項:
-h, --host=HOSTNAM 資料庫伺服器所在機器的主機名或套接字目錄
-p, --port=PORT 資料庫伺服器埠號
-U, --username=USERNAME 聯接用戶 (不是要創建的用戶名)
-w, -no-password 永遠不提示輸入口令
-W, --password 強制提示輸入口令

臭蟲報告至<[email protected]>.

C:\Documentsand Settings\Administrator>

方式3

在C:\Program Files\PostgreSQL\9.2\bin文件夾下有可執行文件createuser.exe,我雙擊後,該文件執行一閃就關閉,只好在dos中輸入cmd打開窗口,將該文件拖入窗口中,在輸入「 –U postgres –P Adiminisrator」然後回車,如下圖所示,即可創建資料庫用戶Administrator。但此時該用戶不具有創建database的能力,可以通過pgAdmin III查看。

psql的用法可以通過在dos下輸入psql –help查看,如下圖所示。
MicrosoftWindows XP [版本 5.1.2600]
(C) 版權所有1985-2001 Microsoft Corp.

C:\Documentsand Settings\Administrator>psql --help
psql是PostgreSQL 的互動式客戶端工具。
使用方法:
psql [選項]... [資料庫名稱 [用戶名稱]]
通用選項:
-c,--command=命令 執行單一命令(SQL或內部指令)然後結束
-d, --dbname=資料庫名稱 指定要連接的資料庫 (預設:"Administrator")
-f, --file=文件名 從文件中執行命令然後退出
-l, --list 列出所有可用的資料庫,然後退出
-v, --set=, --variable=名稱=值
為psql變數(名稱)設定值
-V, --version 輸出版本信息, 然後退出
-X, --no-psqlrc 不讀取啟動文檔(~/.psqlrc)
-1 ("one"), --single-transaction
作為一個單一事務來執行命令文件
-?, --help 顯示此幫助, 然後退出

輸入和輸出選項:
-a, --echo-all 顯示所有來自於腳本的輸入
-e, --echo-queries 顯示發送給伺服器的命令
-E, --echo-hidden 顯示內部命令產生的查詢
-L, --log-file=文件名 將會話日誌寫入文件
-n, --no-readline 禁用增強命令行編輯功能(readline)
-o, --output=FILENAME 將查詢結果寫入文件(或 |管道)
-q, --quiet 以沉默模式運行(不顯示消息,只有查詢結果)
-s, --single-step 單步模式 (確認每個查詢)
-S, --single-line 單行模式 (一行就是一條 SQL 命令)

輸出格式選項 :
-A, --no-align 使用非對齊表格輸出模式
-F, --field-separator=字元串
設欄位分隔符(預設:"|")
-H, --html HTML 表格輸出模式
-P, --pset=變數[=參數] 設置將變數列印到參數的選項(查閱 \pset 命令)
-R, --record-separator=字元串
設定記錄分隔符(預設:換行符號)
-t, --tuples-only 只列印記錄i
-T, --table-attr=文本 設定 HTML 表格標記屬性(例如,寬度,邊界)
-x, --expanded 打開擴展表格輸出
-z, --field-separator-zero
設置欄位分隔符為位元組0
-0, --record-separator-zero
設置記錄分隔符為位元組0

聯接選項:
-h, --host=主機名 資料庫伺服器主機或socket目錄(預設:"本地介面")
-p, --port=埠 資料庫伺服器的埠(預設:"5432")
-U, --username=用戶名 指定資料庫用戶名(預設:"Administrator")
-w, --no-password 永遠不提示輸入口令
-W, --password 強制口令提示 (自動)

更多信息,請在psql中輸入"\?"(用於內部指令)或者"\help"(用於SQL命令),
或者參考PostgreSQL文檔中的psql章節.

臭蟲報告至<[email protected]>.

C:\Documentsand Settings\Administrator>

Ⅳ pgAdmin如何使用postgresql應該怎麼設置

.2.1 pgAdmin3的啟動

您可以在應用程序---系統工具中找到pgAdmin3的啟動項;
也可以在命令行下輸入:
xiaop@xiaop-laptop:~$ /usr/bin/pgadmin3 start

6.2.2 連接已創建的資料庫mydb ;

點擊檔案-----新增伺服器,然後在跳出的窗口下輸入:
地址:localhost
描述:伺服器名稱(隨意填寫)
維護資料庫:postgres
用戶名:自己創建一個(詳情參見創建用戶)
密碼:和用戶名對應(創建用戶時自己創建)

點擊確定後大家便可以查看postsql已有的資料庫了;
註:pgAdmin3的資料庫和終端下創建的資料庫是完全同步的(可以用刷新查看效果), pgAdmin3是比較方便的圖形化管理工具,它可以創建圖表,管理資料庫等,有關pgAdmin3的詳細介紹我們在以後討論,本文主要介紹命令行下的操作。圖形化管理工具能做到的命令行都可以做到,您可以在命令行下創建表,在pgAdmin3上查看是否同步:

7. 創建和刪除表;

7.1 創建新表;

創建完資料庫之後,您就可以創建新表了,可以通過聲明表的名字和所有欄位的名字及其類型來創建表,例如:
mydb#CREATE TABLE weather (
city varchar(80),
temp_lo int, -- 最低氣溫
temp_hi int, -- 最高氣溫
prcp real, -- 降水量
date date
);

註:您可以在 psql 里連換行符一起鍵入這些東西。 psql 可以識別該命令直到分號才結束,不要忘記「;」
您可以在 SQL 命令中自由使用空白(也就是空格,tab,和換行符)。 這就意味著您可以用和上面不同的對齊方式鍵入命令。 兩個劃線("--") 引入注釋。 任何跟在它後面的東西直到該行的結尾都被忽略。 SQL 是對關鍵字和標識符大小寫不敏感的語言,只有在標識符用雙引號包圍時才能保留它們的大小寫屬性。

7.2 數據類型;

上面例子中的varchar(80) 聲明一個可以存儲最長 80 個字元的任意字元串的數據類型。 int 是普通的整數類型。 real 是一種用於存儲單精度浮點數的類型。 date 類型應該可以自解釋。
PostgresSQL 支持標準的 SQL 類型 int,smallint, real,double precision, char(N), varchar(N),date, time,timestamp 和 interval,還支持其他的通用類型和豐富的幾何類型。 PostgreSQL 可以客戶化為定製任意的用戶定義的數據類型,您可以參考PostgreSQL的中文文檔來查詢;

7.3 刪除表;

如果您不再需要某個表,或者您想創建一個不同的表,那麼您可以用下面的命令刪除它:
mydb#DROP TABLE tablename

8. 向表中添加行;

8.1 INSERT;

INSERT 用於向表中添加行,您可以輸入(在資料庫中操作):
mydb#INSERT INTO weather VALUES ('San Francisco', 46, 50, 0.25, '1994-11-27');

註:所有數據類型都使用了相當明了的輸入格式。 那些不是簡單數字值的常量必需用單引號(')包圍, 就象在例子里一樣。

8.2 point類型輸入;

point 類型要求一個座標對作為輸入,如下:
mydb#INSERT INTO cities VALUES ('San Francisco', '(-194.0, 53.0)');

8.3 COPY;

您還可以使用 COPY 從文本文件中裝載大量數據。 這么干通常更快,因為 COPY 命令就是為這類應用優化的, 只是比 INSERT 少一些靈活性.比如:
mydb#COPY weather FROM '/home/user/weather.txt';

註:weather.txt是您提前寫好的符合格式標準的表格內容文檔;

9. 查詢一個表;

9.1 SELECT;

要從一個表中檢索數據就是查詢這個表。 SQL 的 SELECT 就是做這個用途的。 該語句分為選擇列表(列出要返回的欄位部分),表列表(列出從中檢索數據的表的部分), 以及可選的條件(聲明任意限制的部分)。比如,要檢索表 weather 的所有行,鍵入:
SELECT * FROM weather;
<code>
輸出結果:
<code>
city | temp_lo | temp_hi | prcp | date
---------------+---------+---------+------+------------
San Francisco | 46 | 50 | 0.25 | 1994-11-27
San Francisco | 43 | 57 | 0 | 1994-11-29
Hayward | 37 | 54 | | 1994-11-29
(3 rows)

您可以在選擇列表中寫任意表達式,而不僅僅是欄位列表。比如,您可以:
SELECT city, (temp_hi+temp_lo)/2 AS temp_avg, date FROM weather;

這樣應該得出:
city | temp_avg | date
---------------+----------+------------
San Francisco | 48 | 1994-11-27
San Francisco | 50 | 1994-11-29
Hayward | 45 | 1994-11-29
(3 rows)

請注意這里的 AS 子句是如何給輸出欄位重新命名的。(AS 子句是可選的。)

9.2 WHERE;

一個查詢可以使用 WHERE 子句"修飾",聲明需要哪些行。 WHERE 子句包含一個布爾(真值)表達式,只有那些布爾表達式為真的行才會被返回。 允許您在條件中使用常用的布爾操作符(AND,OR, 和 NOT)。 比如,下面的查詢檢索舊金山的下雨天的天氣:
mydb#SELECT * FROM weather
WHERE city = 'San Francisco' AND prcp > 0.0;

結果:
city | temp_lo | temp_hi | prcp | date
---------------+---------+---------+------+------------
San Francisco | 46 | 50 | 0.25 | 1994-11-27
(1 row)

9.3 排序;

您可以要求返回的查詢是排好序的:
mydb#SELECT * FROM weather
ORDER BY city;

得出結果:
city | temp_lo | temp_hi | prcp | date
---------------+---------+---------+------+------------
Hayward | 37 | 54 | | 1994-11-29
San Francisco | 43 | 57 | 0 | 1994-11-29
San Francisco | 46 | 50 | 0.25 | 1994-11-27

在這個例子里,排序的順序並非絕對清晰的,因此您可能看到 San Francisco 行隨機的排序。 但是如果您使用下面的語句,那麼就總是會得到上面的結果
SELECT * FROM weather
ORDER BY city, temp_lo;

您可以要求查詢的結果按照某種順序排序, 並且消除重復的行輸出:
mydb#SELECT DISTINCT city
FROM weather;

得出結果:
city
---------------
Hayward
San Francisco
(2 rows)

Ⅳ 如何導入PostgreSQL資料庫數據

說起資料庫,大家耳熟能詳的商業資料庫產品當推Oracle、微軟的SqlServer和IBM的

DB2等,而開源資料庫中則有兩大產品MySQL和PostgreSQL。

PostgreSQL 是一種對象-關系型資料庫管理系統(ORDBMS),也是目前功能最強大、

特性最豐富和最復雜的自由軟體資料庫系統。它起源於伯克利(BSD)的資料庫研究計劃,

目前是最重要的開源資料庫產品開發項目之一,有著非常廣泛的用戶。

PostgreSQL 可以說是最富特色的自由資料庫管理系統,也有人認為可以是最強大的自由

軟體資料庫管理系統。PostgreSQL 是唯一支持事務、子查詢、多版本並行控制系統、數據完

整性檢查等特性的唯一的一種自由軟體的資料庫管理系統。能在多平台下---包括Linux、

FreeBSD和Windows等---運行,並且支持多語言的開發。

在兩大開源資料庫產品的對比中,一般認為MySQL速度更快,所以得到更為廣泛的使

用;而PostgreSQL性能更為先進,PostgreSQL 提供很多 MySQL 目前所不支持的特性,比

如觸發器、視圖、存儲過程等等,在記錄數超千萬之後性能表現尤其出色。

當前的最新版本是PostgreSQL 8.2.3,官方網站是:

www.postgresql.org

1.2 什麼是PostGIS

PostGIS在對象關系型資料庫PostgreSQL上增加了存儲管理空間數據的能力,相當於

Oracle的spatial部分。PostGIS最大的特點是符合並且實現了OpenGIS的一些規范,是最著

名的開源GIS資料庫。

當前的最新版本是PostGIS 1.2.1,官方網站是:

www.postgis.org

二 PostgreSQL和PostGIS的安裝

2.1 在windows下安裝。

新版本的PostgreSQL在其安裝程序中集成了PostGIS,只需要在安裝過程中選中

PostGIS和pgsql項就可以了。

2.2 在Debian下安裝PostGIS

# apt-get install postgresql-8.1 postgresql-8.1-postgis

當前Etch中的版本:PostgreSQL是8.1.7,而PostGIS是1.1.6,雖然不是最新的版本,

但已經足夠了。

還需要做的工作是:

1) 創建一個專門用於PostGIS的資料庫並為專用資料庫導入PostGIS支持:

# su – postgres

$ cd /usr/share/postgresql-8.1-postgis

$ createdb wen1

$ createlang plpgsql wen1

$ psql -d wen1 -f lwpostgis.sql

$ psql -d wen1 -f spatial_ref_sys.sql

2) 創建一個專門的用戶,並把相應的資料庫和數據表的屬主設置為該用戶:

# su – postgres

$ psql

$ create user wen1 password 『123456』;

$ alter database wen1 owner to wen1;

$ alter table spatial_ref_sys owner to wen1;

$ alter table geometry_columns owner to wen1 ;

3) 修改PostgreSQL配置文件以便可以遠程使用。

修改PostgreSQL的配置文件/etc/postgresql/8.1/main/Postgresql.conf,將其中的一句:

listen_address=』localhost』

前面的注釋去掉,並把』localhost』該為』*』。

修改Postgresql的配置文件/etc/postgresql/8.1/main/pg_hba.conf,在文件後面加一句:

host all all 192.168.0.0/24 password

這句的意思是:同網路中192.168.0.*的機器可以以密碼的形式使用所有的資料庫。更具

體的參數意義直接看該配置文件中的注釋就可以了。

這里一定要配置正確,否則無法在遠程連接PostgreSQL資料庫。

2.3 源碼安裝PostgreSQL和PostGIS

參閱以前寫的老文章。

三 PostGIS的使用

要使用PostGIS,需要兩方面的預備知識,一是要熟悉基本的SQL語法;二是熟悉

PostgreSQL資料庫的基本使用。

(一) 快速入門

我們使用前面創建的資料庫wen2,用戶為wen1,現在創建一個包含三個點的資料庫

test1:

首先在Etch下以wen1登陸,然後打開wen2資料庫:

$ psql -d wen2 ;

再在PostgreSQL的控制台下輸入以下命令:

wen2=> create table test1 (myID int4, pt geometry, myName
varchar );

wen2=> insert into test1 values (1, 'POINT(0 0)', 'beijing'
);

wen2=> insert into test1 values (2, 'POINT(31.5 60.87)',
'shanghai' );

wen2=> insert into test1 values (3, 'POINT(10.77 85.902)',
'tianjin' );

這樣我們利用PostGIS創建了一個包含三個點的GIS數據表。

為了能在QGIS中打開這一圖層,我們還需要為數據表創建一個主鍵:

wen2=>alter table test1 add primary key (myID);

可以看到PostGIS的使用其實就相當於使用一個經過擴展的SQL語法,上述語句熟悉

SQL語法的人一看都很熟悉,都是普通的SQL語句,不同的只不過是增加了PostGIS特殊的

geometry數據類型。

你可以再試試這些SQL語句:

select * from test1;

select myID,AsText(pt) from test1;

select Distance(pt, 'POINT(0 0)') from test1;

(二) PostGIS的Geometry數據類型

Geometry可以說是PostGIS最重要的一個概念,是「幾何體」的意思,由於PostGIS很

好地遵守OGC的」Simple Feature for Specification for
SQL」規范,目前支持的幾何體類型包

含其實例有:

POINT(1 1)

MULTIPOINT(1 1, 3 4, -1 3)

LINESTRING(1 1, 2 2, 3 4)

POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))

MULTIPOLYGON((0 0, 0 1, 1 1, 1 0, 0 0), (5 5, 5 6, 6 6, 6 5, 5
5))

MULTILINESTRING((1 1, 2 2, 3 4),(2 2, 3 3, 4 5))

而geometry具體表現又有兩種形式,一種叫做WKT(Well Known Text)形式,如上面的

例子。或者使用如下SQL語句瀏覽:

select AsText(pt) from test1;

另一種叫做「Canonical Form」形式,看上去是一串古怪的數字,其實是一種增強的十六

進制編碼,使用如下SQL語句就可以瀏覽了:

select pt from test1;

(三) 讀寫PostGIS數據

建設好PostGIS資料庫之後,我們現在需要進行讀寫GIS數據了,包括把GIS寫入到

PostGIS資料庫中以及在應用程序中使用PostGIS資料庫的數據。讀寫PostGIS目前主要有以

下四種方式:

3.1 使用psql語言

Psql語言是PostgreSQL內嵌的一個命令行工具,其語法基本上和標準的SQL語法是一

致的,可以使用Psql工具,結合標准SQL語法和一些PostGIS的擴展對PostGIS資料庫進行

讀寫操作。

具體例子如上面「快速入門」中的例子。

這種方式功能強大,但全部需要手工操作,煩瑣且繁重。

3.2 使用一些小工具

有兩個很有用的小的轉換工具,一是shp2pg;一是ogr2ogr

3.2.1 shp2pgsql和pgsql2shp

shp2pgsql和pgsql2shp是PostGIS自身攜帶的一對在Shape文件和PostGIS資料庫之間進

行轉換的工具,在Debian中安裝好PostGIS之後,這兩個程序已經位於可執行文件的搜索路

徑上,因此可以在系統中任何位置使用。

假如當前目錄下有完整的china.shp文件(應該有三個同名不同擴展名的文件),需要把其

中數據輸入到上述的wen2資料庫中的數據表china_postgis中,具體操作為(操作用戶為

wen1):

$ shp2pgsql china china_postgis > tmp.sql

$ psql -d wen2 -f roads.sql

這個工具很好用,缺點在於使用范圍有限,只針對Shape文件格式。

3.2.2 ogr2ogr

PostGIS本身的shp2pg工具只把shape文件轉換到PostGIS 資料庫中,那如何把其他的

GIS數據加入呢?比如說MapInfo的mid格式,ESRI的e00格式呢?這就要使用ogr這個工

具了。

Ogr目前是gdal的一個組成部分,那什麼是gdal呢?其官方主頁(http://www.gdal.org)上

如此介紹:

GDAL is a translator library for raster geospatial data formats
that is released under an X/MIT

style Open Source license by the Open Source Geospatial
Foundation. As a library, it presents a

single abstract data model to the calling application for all
supported formats. It also comes with a

variety of useful commandline utilties for data translation and
processing.

簡單地說,Gdal是一個各種Gis數據格式的轉換軟體庫,ogr則是轉換矢量GIS數據的

軟體庫。

目前ogr能夠支持的數據格式包括:

Arc/Info Binary Coverage、DWG、ESRI Personal
GeoDatabase、ArcSDE、ESRI

Shapefile、GML、GRASS、Mapinfo File、Microstation DGN、ODBC、Oracle
Spatial和

PostgreSQL等。應該說,這就基本包括了我們平常用到的所有矢量型GIS文件格式了。

Gdal支持的柵格數據格式參閱http: //www.gdal.org/formats_list.html

下面我們從源碼編譯安裝gdal---因為我在Debian下使用apt方式安裝的gdal並不支持

postgresql資料庫,其實更為簡便的方法也許是去gdal.org下載一個Fwtools的工具包,可以

直接運行不用繁瑣的編譯,既有Windows的,也有Linux下用的,只不過這個包有些大。

1) 下載最新的gdal-1.3.2

2) 解壓

3) ./configure --prefix=/opt/gdal
--with-pg=/opt/pg/bin/pg_config --without-ogdi

這里我習慣把軟體安裝在/opt目錄下。

--with-pg參數很重要,使ogr可以支持PostGIS,後面的參數是我的PostGIS安裝的地方。

我在這里編譯很多次失敗,經過仔細查找,發現問題出在ogdi上,所以暫時我只好使

它不支持ogdi。

4) make

5) make install

下面是使用過程,假設現在我要把一個rai.mid文件導入到資料庫data1中:

$ ogr2ogr –f Postgresql PG:dbname=data1 rai.mid

注意,f參數後面跟的是導入的數據類型,最後那個文件才是要導出的文件。PG後面說

明的是資料庫的名字,需要是已經創建好的資料庫,而數據表則由程序自動創建。還要特別

注意許可權問題,以上命令我是由postgres用戶執行的。

還有一個要注意的是主鍵問題。一般情況下,你使用shp2pg或者 ogr2ogr向postgis中

增加了Gis數據後,在GIS客戶端添加postgis圖層的時候,常常會因為數據表沒有定義主鍵

而出錯,解決的辦法是,在伺服器上使用psql或者其他sql工具,使用命令:

alter table table_name add primary key (column_name);

另外我們發現ogr竟然是不支持最常見的GIS格式e00格式,好象是因為版權方面的原

因吧。解決的方法就是去sf.net查找相關工具。我在上面就找到一個e002pg工具,支持將

e00文件導入到postGIS資料庫中。

3.3 在其他GIS軟體中讀寫PostGIS數據

比如在QGIS中,能夠打開PostGIS圖層,還有SPIT插件可以把Shape文件輸入到

PostGIS資料庫中。

其他GIS軟體如uDig,Grass等,甚至連ArcInfo都支持或部分支持讀寫PostGIS數據。

3.4 利用介面在應用程序中讀寫PostGIS數據

廣大的開源GIS程序員幾乎為每一種程序設計語言設計好了讀寫PostGIS的介面,如利

用PostgreSQL的JDBC庫,可以使用Java語言在程序中讀寫PostGIS數據;利用libpq庫,

可以使用C語言讀寫PostGIS數據。

(四) 使用PostGIS函數

4.1 PostGIS函數

要能熟練使用PostGIS,掌握PostGIS的所有函數是關鍵。通過掌握這些PostGIS函數,

我們能夠高效、穩定地處理各種地理數據。由於PostGIS的函數設計時都遵守OpenGIS規范,

我們也可以把這些PostGIS叫做OpenGIS函數。

4.2 PostGIS函數的分類

PostGIS函數大致可以分為以下四類

1) 欄位處理函數

這類函數當前一共有3個,分別是:

AddGeometryColumn(var1,var2,var3,var4,var5,var6):為已有的數據表增加一個地理幾何

數據欄位。Var1代表數據表的模式(schema)的名字,一般是public,也可以省略,則使用當

前的預設模式;var2是已有的數據表的名字;var3是新的地理數據欄位的名字;var4是

SRID值,不確定的話就取-1吧;var5是地理數據的類型,可以是POINT等;var6是指該幾

何數據是二維還是三維數據。

前面的SQL語句 create table test1 (myID int4, pt geometry, myName
varchar )更規范的寫

法為:

create table test1 (myID int4, myName varchar );

select AddGeometryColumn('test1','pt',-1,'GEOMETRY',2);

DropGeometryColumn函數顯然是刪除一個地理數據欄位的;

SetSRID函數顯然是設置SRID值的。

2) 幾何關系函數

這類函數目前共有10個,分別是:

Distance Equals Disjoint Intersects Touches Crosses Within
Overlaps Contains Relate

3) 幾何分析函數

這類函數目前共有12個,分別是:Centroid Area Lenth PointOnSurface Boundary
Buffer

ConvexHull Intersection SymDifference Difference GeomUnion
MemGeomUnion

4) 讀寫函數

這類函數很多,主要是用於在各種數據類型之間的轉換,尤其是在於Geometry數據類

型與其他如字元型等數據類型之間的轉換,函數名如AsText、GeomFromText等,其作用是

顯然的。

4.3 PostGIS函數使用示例。

假設在我們的wen2資料庫中,有兩張表,一張為guojia,是從「國家基礎地理數據」

網站下載的國界數據表,數據類型為LINE;二為shengqu_polygon,也從同一個網站下載,

地理數據類型為多邊形。

1) 查詢我國邊境線的長度:

wen1=> select sum(length(the_geom)) as lenth from guojie;

2) 查詢我國面積最大的省區名字:

wen1=> select name area(the_geom) as myarea

from shengqu_polygon

order by myarea DESC

LIMIT 1;

(五) 使用PostGIS擴展函數

除了上述遵循OpenGIS的函數之外,PostGIS還自行擴展了一些當前OpenGIS規范之外

的函數,主要包括以下幾類:

5.1 管理類函數

擴展的管理類函數主要包括一些軟體版本查詢函數,如

postgis_version()、postgis_geos_version()、postgis_proj_version()函數等,分別查詢當前的

PostGIS的版本及其使用的Geos和Proj庫的版本。

5.2 數據類型的輸入輸出函數

除了OpenGIS定義的地理數據類型之外,PostGIS還對數據類型進行了擴展,這種擴展

主要是兩方面的擴展,一是把二維的數據向三維和四維擴展;二就是在WKT和WKB數據

類型基礎上擴展出EWKT和EWKB數據類型。

PostGIS提供了在這些地理數據類型和常用數據類型如字元型、浮點型數據之間進行轉

換的函數。

5.3 量算函數

如length3d函數是對length2d函數的擴展。

5.4 幾何操作函數

如addBBox(geometry)函數給所給的幾何體加上一個邊框。

如simplify(geometry,tolerance)函數可以對折線和多邊形利用Douglas-Peuker演算法進行一

些節點進行刪除,從而使表現的圖形更簡單而清晰,在網路傳輸數據時具有更高的效率。

5.5 操作符號

5.6 其他擴展函數

(六) 建立PostGIS索引

當資料庫的記錄增大的時候,如果沒有建立索引的話,操作的效率就顯著下降。

POstGIS建議當記錄數超過幾千的時候就應該建立索引,而GIS資料庫一般都是海量數據,

所以對PostGIS而言,索引就非常重要。

Shapfile文件為ESRI公司的文件存儲格式,並且得到了業界廣泛的支持。Shapfile格式是一種簡單的,用非拓樸關系的形式存儲幾何位置和地
理特徵的屬性信息的格式。雖然GeoServer採用Shapfile文件可以快速的創建網上地圖服務,但它的缺點確很明顯:

1、Shapefile只支持一個圖層,在實際中沒有意義。

2、直接保用SHP文件不安全,Shapfile文件很容易被病毒或其他原因誤刪除。

3、GeoServer中用Shapfile文件作數據源的效率是很低的。

4、Shapfile中的漢字GeoServer不能解析,會出現亂碼。

5、資料庫可以方便的對地理信息進行查詢。

用PostGIS管理空間數據

PostGIS支持GIST空間索引(附錄1)、規范窗體,能很大的提高處理效率。


OGC格式只提供二維的幾何體,且相關聯的SRID從未深入的用於輸入輸出請求,PostGIS支持OpenGIS組織"Simple
Features for
SQL"規范指定的所有GIS對象和函數,並進行了擴展,格式是EWKB、EWKT,其中增加了對3DZ,3DM和4D
坐標系的支持(當然三維、四維數據的OGC標准還未完全制定),深入引進了SRID信息。

空間數據表結構:PostGIS中存在兩個必需的元數據表格, SPATIAL_REF_SYS(空間參考表格) 和
GEOMETRY_COLUMNS(幾何體屬性列),兩個表用於存儲空間資料庫使用的坐標系統數字ID和文本描述。

PostGIS的shp2pgsql命令可以將Shapfile直接導入到資料庫中也可以導出為SQL文件,推薦先導出為SQL文件再將此文件在SQL運行窗口中執行可將數據導入資料庫。

Shapfile到SQL語句:

shp2pgsql 路徑shp數據文件名 新建的數據表名 >
路徑SQL文件名.sql

Shapfile直接入庫:

shp2pgsql -c 路徑shp數據文件名 新建的數據表名 資料庫名|psql -d 資料庫名

舉例說明:

如將一Shapfile文件「c:road.shp」導入到數據表「road」中,資料庫為「sjzmap」。

1、運行「命令提示符」。

2、切換至PostgreSQL資料庫安裝目錄中的bin目錄下。

3、執行此目錄下的shp2pgsql命令:「shp2pgsql c:road.shp road >
c:road.sql」。

4、如將此文件直接導入資料庫(不推薦):「shp2pgsql -c c:road.shp road
sjzmap | psql -d sjzmap」。

5、使用pgAdmin3
選擇資料庫,再導入表。

Ⅵ 如何在CentOS 7/6.5/6.4 下安裝PostgreSQL 9.3 與 phpPgAdmin

PostgreSQL是一個強大開源的對象關系類型資料庫系統,它能運行於幾乎所有主要的操作系統,包括Linux、Unix(AIX、BSD、HP-UX、SGIIRIX、MacOS、Solaris、Tru64)、WindowsOS。在這篇教程里,我們將學習如何在CentOS7/6.5/6.4server中建立PostgreSQL。1.安裝PostgreSQL首先根據你的伺服器架構添加PostgreSQL庫:對CentOS6.x32bit:rpm-Uvhtcpfirewall-cmd--reload3.訪問PostgreSQL常用的命令提示符默認情況下資料庫名和用戶名都是postgres。切換至用戶以執行相關操作:su–postgres輸入以下命令登陸:psql會有以下樣例輸出:psql(9.3.5)Type"help"forhelp.Postgres=#可通過輸入\q退出postgresql返回命令終端:4.設置用戶密碼登陸至postgres命令提示符界面su–postgrespsql然後使用命令設置密碼postgres=#\:Enteritagain:postgres=#\q輸入命令以建立PostgreSQL系統管理工具postgres=#CREATEEXTENSIONadminpack;CREATEEXTENSION5.創建用戶和資料庫例如:用戶名:senthil密碼:centos資料庫名:mydb轉到postgres用戶su–postgres創建用戶senthil$createusersenthil創建資料庫$createdbmydb現在登陸至psql提示符界面,為用戶senthil設置密碼及授權對資料庫mydb的訪問:$psqlpsql(9.3.5)Type"help"forhelp.postgres=#'centos';ALTERROLEpostgres=#;GRANTpostgres=#6.刪除用戶和資料庫首先轉到postgres界面su–postgres輸入命令$dropdb刪除用戶名可輸入$dropuser7.配置PostgreSQL-MD5認證MD5認證需要客戶端提供一個MD5-encrypted密碼以便身份驗證。你需要編輯/var/lib/pgsql/9.3/data/pg_hba.conf文件:vi/var/lib/pgsql/9.3/data/pg_hba.conf添加或修改的行如下:[]#TYPEDATABASEUSERADDRESSMETHOD#"local"#IPv4localconnections:hostallall127.0.0.1/32md5hostallall192.168.1.0/24md5#IPv6localconnections:hostallall::1/128md5[]重啟postgresql服務以應用更改在CentOS6.x系統中servicepostgresql-9.3restart在CentOS7系統中systemctlrestartpostgresql-9.38.配置PostgreSQL-ConfigureTCP/IP默認情況下,TCP/IP連接是不可行的,所以其他計算機用戶不能連接到postgresql。編輯文件/var/lib/pgsql/9.3/data/postgresql.conf可以允許連接:vi/var/lib/pgsql/9.3/data/postgresql.conf找到下面的行:[]#listen_addresses='localhost』[]#port=5432[]把兩行都取消並設置為你的postgresql伺服器IP地址或設置為「*」監聽所有客戶端。如下所示:listen_addresses='*'port=5432重啟以應用更改在CentOS6.x系統中:/etc/init.d/postgresql-9.3restart在CentOS7系統中:systemctlrestartpostgresql-9.39.使用phpPgAdmin管理PostgreSQLphpPgAdmin是使用PHP編寫的基於web的管理工具,用於管理PostgreSQL。它只適用與PostgreSQLRPM庫。如果你沒有添加PostgreSQL庫,你可以添加EPEL庫。可根據下面的鏈接在CentOS6.x中建立EPEL庫

Ⅶ 如何用命令打開postgresql資料庫

F:\PostgreSQL\9.2\bin>psql.exe
-h
localhost
-U
postgres
-d
Test
-p
5432psql
(9.2.4)輸入
"help"
來獲取幫助信息.Test=#Test=#
help;您正在使用psql,
這是一種用於訪問PostgreSQL的命令行界面鍵入:
\right
顯示發行條款
\h
顯示
SQL
命令的說明
\?
顯示
pgsql
命令的說明
\g
或者以分號(;)結尾以執行查詢
\q
退出注:
資料庫名稱區分大小寫的。使用某些有密碼的用戶的情況下,
會提示輸入密碼.F:\PostgreSQL\9.2\bin>psql.exe
-h
localhost
-U
test
-d
Test
-p
5432用戶
test
的口令:psql
(9.2.4)輸入
"help"
來獲取幫助信息.Test=#

閱讀全文

與命令行連接postgresql相關的資料

熱點內容
外包程序員好進嗎 瀏覽:380
雲伺服器服務模型架構 瀏覽:899
刪文件夾什麼指令 瀏覽:507
極速抖音已加密怎麼辦 瀏覽:601
matlab拉格朗日演算法框圖 瀏覽:428
華為公司計算機視覺演算法顧問 瀏覽:252
夏老師講的單片機 瀏覽:296
在編程中如何將圖片放大 瀏覽:161
appstore怎麼看是否付費 瀏覽:603
程序員和碩士 瀏覽:951
gcc編譯消耗內存過多 瀏覽:281
昌邑網站製作源碼 瀏覽:127
單片機的反向編譯 瀏覽:463
subsample演算法 瀏覽:899
蘋果免費看書app哪個最好 瀏覽:885
c語言加密怎麼弄 瀏覽:842
c語言編譯的錯誤提示 瀏覽:767
驗機蘋果app哪個最好 瀏覽:666
光遇國際服安卓如何購買禮包 瀏覽:55
163app怎麼下載 瀏覽:247