A. 如何學習Postgresql SQL語法
我們可以利用psql命令來查詢sql語法。
切換到PostgreSql用戶下,
[sql] view plain
<span style="font-size:18px;">[doctor@localhost ~]$ su - postgres
密碼:
su: 鑒定故障
[doctor@localhost ~]$ su - postgres
密碼:
-bash-4.3$ bash
bash-4.3$ psql
psql (9.4.2)
輸入 "help" 來獲取幫助信息.
postgres=#
postgres=# help
您正在使用psql, 這是一種用於訪問PostgreSQL的命令行界面
鍵入: \right 顯示發行條款
\h 顯示 SQL 命令的說明
\? 顯示 pgsql 命令的說明
\g 或者以分號(;)結尾以執行查詢
\q 退出
postgres=#
</span>
\h 命令就是我們用來學習sql語法的命令。
[sql] view plain
<span style="font-size:18px;">postgres=# \h
可用的說明:
ABORT DEALLOCATE
ALTER AGGREGATE DECLARE
ALTER COLLATION DELETE
ALTER CONVERSION DISCARD
ALTER DATABASE DO
ALTER DEFAULT PRIVILEGES DROP AGGREGATE
ALTER DOMAIN DROP CAST
ALTER EVENT TRIGGER DROP COLLATION
ALTER EXTENSION DROP CONVERSION
ALTER FOREIGN DATA WRAPPER DROP DATABASE
ALTER FOREIGN TABLE DROP DOMAIN
ALTER FUNCTION DROP EVENT TRIGGER
ALTER GROUP DROP EXTENSION
ALTER INDEX DROP FOREIGN DATA WRAPPER
ALTER LANGUAGE DROP FOREIGN TABLE
ALTER LARGE OBJECT DROP FUNCTION
ALTER MATERIALIZED VIEW DROP GROUP
ALTER OPERATOR DROP INDEX
ALTER OPERATOR CLASS DROP LANGUAGE
ALTER OPERATOR FAMILY DROP MATERIALIZED VIEW
ALTER ROLE DROP OPERATOR
ALTER RULE DROP OPERATOR CLASS
postgres=# \h select
命令: SELECT
描述: 從資料表或視觀表讀取資料
語法:
[ WITH [ RECURSIVE ] with查詢語句(with_query) [, ...] ]
SELECT [ ALL | DISTINCT [ ON ( 表達式 [, ...] ) ] ]
[ * | 表達式 [ [ AS ] 輸出名稱 ] [, ...] ]
[ FROM from列表中項 [, ...] ]
[ WHERE 條件 ]
[ GROUP BY 表達式 [, ...] ]
[ HAVING 條件 [, ...] ]
[ WINDOW 窗口名稱 AS ( 窗口定義 ) [, ...] ]
[ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] 查詢 ]
[ ORDER BY 表達式 [ ASC | DESC | USING 運運算元 ] [ NULLS { FIRST | LAST } ] [
, ...] ]
[ LIMIT { 查詢所用返回記錄的最大數量 | ALL } ]
[ OFFSET 起始值 [ ROW | ROWS ] ]
[ FETCH { FIRST | NEXT } [ 查詢所用返回記錄的最大數量 ] { ROW | ROWS } ONLY
]
[ FOR { UPDATE | NO KEY UPDATE | SHARE | KEY SHARE } [ OF 表名 [, ...] ] [ N
OWAIT ] [...] ]
from 列表中的項可以是下列內容之一
[ ONLY ] 表名 [ * ] [ [ AS ] 化名 [ ( 列的化名 [, ...] ) ] ]
[ LATERAL ] ( 查詢 ) [ AS ] 化名 [ ( 列的化名 [, ...] ) ]
WITH查詢語句名稱(with_query_name) [ [ AS ] 化名 [ ( 列的化名 [, ...] ) ] ]
[ LATERAL ] 函數名稱 ( [ 參數 [, ...] ] )
[ WITH ORDINALITY ] [ [ AS ] 化名 [ ( 列的化名 [, ...] ) ] ]
[ LATERAL ] 函數名稱 ( [ 參數 [, ...] ] ) [ AS ] 化名 ( 列定義 [, ...] )
[ LATERAL ] 函數名稱 ( [ 參數 [, ...] ] ) AS ( 列定義 [, ...] )
[ LATERAL ] ROWS FROM( 函數名稱 ( [ 參數 [, ...] ] ) [ AS ( 列定義 [, ...] )
] [, ...] )
[ WITH ORDINALITY ] [ [ AS ] 化名 [ ( 列的化名 [, ...] ) ] ]
from列表中項 [ NATURAL ] 連接操作的類型 from列表中項 [ ON 用連接操作的條件 |
USING ( 用於連接操作的列 [, ...] ) ]
with查詢語句是:
WITH查詢語句名稱(with_query_name) [ ( 列名稱 [, ...] ) ] AS ( 查詢 | 值 | in
sert | update | delete )
TABLE [ ONLY ] 表名 [ * ]
postgres=# </span>
看這命令對於學習sql語法很有用。
B. postgresql 可以導出標準的sql語句么
postgresql 可以導出標準的sql語句,下邊的步驟詳細講述了從Postgres資料庫中導出數據的方法:
(1)將PostgreSQL資料庫的psql工具所在的路徑添加到系統的環境變數中;
(2)運行cmd,在窗口中輸入psql,會有提示輸入口令的信息,按ctrl+c終止該命令;
(3)建立與伺服器的鏈接,具體格式:psql -h 伺服器IP地址 -U 資料庫連接用戶名 -d 資料庫名稱 -p 埠號;(比如:psql -h 192.168.9.202 -U postgres -d luoyang -p 5432),鏈接成功的話會出現:「資料庫名稱=#」格式的提示(luoyang=#);
(4)修改資料庫中導出數據的編碼格式為gbk,指令:\encoding gbk;(輸入\encoding可以查看資料庫的編碼格式,gbk編碼方式保證導出的中文漢字不為亂碼)
(5)導出數據表中的數據為csv格式文件,指令:\ 表名 to 路徑 with csv(比如:\ tbl_user_info to 'C:/user.csv' with csv,成功後在C盤根目錄下就會有相應的csv文件
C. 求postgreSQL 的資料庫的表數據,導入導出的sql語句,謝謝!
Postgresql數據的導入和導出,以及命令介紹
如何導出PostgreSQL資料庫中的數據:
pg_mp -U postgres -f mp.sql mydatabase
具體某個表
pg_mp -U postgres -t mytable -f mp.sql mydatabase
導入數據時首先創建資料庫再用psql導入:
createdb newdatabase
psql -d newdatabase -U postgres -f mp.sql
把數據按照自己所想的方式導出,強大的命令:
echo " students to? stdout DELIMITER '|'"|psql school|head
(students為表名,school為庫名,各個欄位以|分隔)
echo ' (select * from students order by age limit 10) to stdout;' | psql school
D. postgresql怎樣導出sql 文件
導出整個資料庫
pg_mp -h localhost -U postgres(用戶名) 資料庫名(預設時同用戶名) >/data/m.sql
導出某個表
pg_mp -h localhost -U postgres(用戶名) 資料庫名(預設時同用戶名) -t table(表名) >/data/m.sql
E. pgsql資料庫怎麼執行sql語句
PostgreSQL的PL/pgSQL語言是支持動態SQL語句的(說execute immediate的是ECPG所支持的)。但是,要記得重要的一點: 是在PL/pgSQL語言中支持。而PL/pgSQL語言一個塊結構的語言,它以begin ... end為塊的開始與結束標識。
F. postgresql如何執行sql文件
原理:
使用"c:\program
files\postgresql\9.0\bin\psql.exe"來建立到postgresql資料庫的連接後執行sql語句。
(建立資料庫連接的方法,可以參考c:\program
files\postgresql\9.0\scripts\runpsql.bat文件。)
一,執行sql語句
set
db_name=temp
"c:\program
files\postgresql\9.0\bin\psql.exe"
-h
localhost
-u
postgres
-d
%db_name%
-p
5432
-w
-c
"select
*
from
table1;"
二,執行sql腳本文件
在sql語句比較復雜時,可以先把sql語句保存到文件中,然後用psql.exe執行該文件。
@rem
move
to
the
current
file's
directory
%~d0
cd
%~dp0
@rem
excute
a
sql
script
file
to
create
database
"c:\program
files\postgresql\9.0\bin\psql.exe"
-h
localhost
-u
postgres
-d
postgres
-p
5432
-w
-f
resource/db/createdb.sql
如果有多個sql腳本文件(如:a.sql,
b.sql,
c.sql),可以新建一個sql腳本文件(index.sql)來調用這多個腳本文件,這樣在bat中只需要一個命令語句,而不需要多次復制相似的命令。新建index.sql文件的內容可以是:
\i
resource/db/createdb.sql
\i
resource/db/createsp.sql
\i
resource/db/insertdata.sql
備註:
在cmd窗口中輸入
"c:\program
files\postgresql\9.0\bin\psql.exe"
-?
可以查找psql的相關命令。
建立了資料庫連接後,可以用help命令,或者\?
查找sql命令。
G. postgresql怎麼優化sql
postgresql(8.2)的配置文件中有一個參數log_min_ration_statement,意思是只log執行時間大於設定值的語句,如果設為0,表示log所有語句;如果設為-1,表示不log任何語句。
看起來,這個配置選項對性能的調整是很有用的,比如可以設置:
log_min_ration_statement = 1000
則只log執行時間大於1s的語句,重點優化這些sql語句就好了。
然而,奇怪的,這個選項不太容易生效!經過反復試驗,原來需要如下配置:
#debug_print_parse = off
#debug_print_rewritten = off
#debug_print_plan = off
#debug_pretty_print = off
log_connections = off
#log_disconnections = off
log_ration = off
log_line_prefix = '%t [%p]: [%l-1] ' # Special values:
# %u = user name
# %d = database name
# %r = remote host and port
# %h = remote host
# %p = PID
# %t = timestamp (no milliseconds)
# %m = timestamp with milliseconds
# %i = command tag
# %c = session id
# %l = session line number
# %s = session start timestamp
# %x = transaction id
# %q = stop here in non-session
# processes
# %% = '%'
# e.g. '<%u%%%d> '
log_statement = 'none' # none, mod, ddl, all
#log_statement = 'all' # none, mod, ddl, all
#log_hostname = off
注意看上面的其中兩個選項的設置:
log_ration = off
log_statement = 'none'
H. PostgreSQL 動態SQL語句怎麼寫
PostgreSQL的PL/pgSQL語言是支持動態SQL語句的(說execute immediate的是ECPG所支持的)。但是,要記得重要的一點: 是在PL/pgSQL語言中支持。而PL/pgSQL語言一個塊結構的語言,它以begin ... end為塊的開始與結束標識。這也就是說,要執行動態SQL語句,就必須放到begin ... end塊中,而不要想實現一個單獨的動態SQL語句。在SQL Server中,倒是可以輕松的實現,我們可以直接執行一個這樣的動態SQL:
executesp_executesqlN'select1asval'
而在PostgreSQL中,就不要有此想法了。當然,SQL Server的這種動態SQL語句的執行方法也有其局限與不便的地方。
在PL/pgSQL中,執行動態SQL的格式如下(摘錄自說明文檔):
EXECUTEcommand-string[INTO[STRICT]target][USINGexpression[,...]];
其中,
command-string就是要執行的動態SQL語句(一定要記住:這里是SQL語句,不是PL/pgSQL語句,像raise notice就不能使用);
INTO子句是把SQL查詢到的值賦給INTO指定的變數;
USING子句是前面的command-string中替代變數($1, $2, ...)的賦值;
示例:
do$$
declare
v_c1integer;
v_c2integer;
begin
execute'selectcount(*)asc1,count(*)asc2from()swhereidx>$1'
intov_c1,v_c2
using10;
raisenotice'%,%',v_c1,v_c2;
I. 怎麼把sql文件導入postgresql資料庫
1、打開PgAdminIII ,連接伺服器。選擇要執行該文件的資料庫。
2、看到上面欄目有sql字樣的圖標,點擊。
3、打開後,點擊導入文件。執行即可。