postgresql中可以使用pg_dump來備份數(shù)據(jù)庫。pg_dump是用于備份PostgreSQL數(shù)據(jù)庫的工具。它可以在數(shù)據(jù)庫正在使用的時候進行完整一致的備份,并不阻塞其它用戶對數(shù)據(jù)庫的訪問。
成都創(chuàng)新互聯(lián)公司專注于江干企業(yè)網站建設,響應式網站開發(fā),成都商城網站開發(fā)。江干網站建設公司,為江干等地區(qū)提供建站服務。全流程按需求定制制作,專業(yè)設計,全程項目跟蹤,成都創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務
用法:
pg_dump [選項]... [數(shù)據(jù)庫名字]
一般選項:
-f, --file=FILENAME output file or directory name
-F, --format=c|d|t|p output file format (custom, directory, tar, plain text)
-v, --verbose 詳細模式
-Z, --compress=0-9 被壓縮格式的壓縮級別
--lock-wait-timeout=TIMEOUT 在等待表鎖超時后操作失敗
--help 顯示此幫助信息, 然后退出
--versoin 輸出版本信息, 然后退出
示例:
備份數(shù)據(jù)庫,指令如下:
pg_dump -h 164.82.233.54 -U postgres databasename C:databasename.bak
開始-運行-cmd 彈出dos控制臺;然后 在控制臺里,進入PostgreSQL安裝目錄bin下:
cd C:Program FilesPostgreSQL9.0bin
最后執(zhí)行備份指令:
pg_dump -h 164.82.233.54 -U postgres databasename C:databasename.bak
指令解釋:
pg_dump 是備份數(shù)據(jù)庫指令,164.82.233.54是數(shù)據(jù)庫的ip地址(必須保證數(shù)據(jù)庫允許外部訪問的權限哦~),當然本地的數(shù)據(jù)庫ip寫 localhost;
postgres 是數(shù)據(jù)庫的用戶名;databasename 是數(shù)據(jù)庫名。
意思是導出到C:databasename.bak文件里,如果沒有寫路徑,單單寫databasename.bak文件名,那么備份文件會保存在C: Program FilesPostgreSQL9.0bin 文件夾里。
推薦學習《Python教程》。
PostgreSQL自帶有一個簡易的全文檢索引擎,可以實現(xiàn)小規(guī)模數(shù)據(jù)量的全文檢索功能。本文我們將引導介紹一下這個功能,對于小數(shù)據(jù)量的搜索這個功能是足夠使用的,而無需搭建額外的ES等重量級的全文檢索服務器。
PG的全文檢索操作符是 @@ ,當一個 tsvector (文檔)和 tsquery (條件)匹配時返回 true ,并且前后順序無影響:
和普通的SQL查詢一樣,只要在 WHERE 條件中使用這個符號就代表使用全文檢索條件篩選文檔了。如:
@@ 操作符支持隱式轉換,對于 text 類型可以無需強類型轉換( ::tsvector 或 to_tsvector(config_name, text) ),所以這個操作符實際支持的參數(shù)類型是這樣的:
tsquery 查詢條件并不是簡單的正則,而是一組搜索術語,使用并且使用布爾操作符 (AND)、 | (OR)和 ! (NOT)來組合它們,還有短語搜索操作符 - (FOLLOWED BY)。更詳細的語法參見 此文檔 。
此外,PostgreSQL還提供了兩個相對簡化的版本 plainto_tsquery 和 phraseto_tsquery 。
plainto_tsquery ( plainto_tsquery([ config regconfig, ] querytext text) returns tsquery )用戶將未格式化的 text 經過分詞之后,插入 符號轉為 tsquery :
phraseto_tsquery ( phraseto_tsquery([ config regconfig, ] querytext text) returns tsquery )行為和 plainto_tsquery 行為類似,但是分詞之后不是插入 而是 - (FOLLOWED BY):
使用索引可以加快全文檢索的速度。對于全文檢索來說,可選的索引類型是 GIN (通用倒排索引)和 GIST (通用搜索樹),官方文檔更推薦使用 GIN索引 。創(chuàng)建一個 GIN 索引的范例:
也可以是一個連接列:
還可以單獨創(chuàng)建一個 tsvector 列,為這個列創(chuàng)建索引:
除了普通的 ORDER BY 條件之外,PostgreSQL為全文檢索提供了兩個可選的排序函數(shù) ts_rank([ weights float4[], ] vector tsvector, query tsquery [, normalization integer ]) returns float4 和 ts_rank_cd([ weights float4[], ] vector tsvector, query tsquery [, normalization integer ]) returns float4 ,以便實現(xiàn)基于 權重 的排序。
此外,對于PostgreSQL 9.6以上的版本還可以使用 RUM index 排序。(注意,這個是擴展,默認不包含)。
PostgreSQL默認的分詞字典中并不包含中文分詞字典,因此我們必須手工引入。目前一個比較好的項目是 zhparser ,同時這個插件也是阿里云的RDS默認包含的。安裝和啟用沒什么好說的。值得一提的是分詞配置參數(shù)。
在 CREATE EXTENSION 之后,必須配置分詞參數(shù)才能正確進行分詞和查找,否則什么都查不到。官方文檔提供的一個配置策略是:
n,v,a,i,e,l 這幾個字母分別表示一種token策略,只啟用了這幾種token mapping,其余則被屏蔽。具體支持的參數(shù)和含義可以用 \dFp+ zhparser 顯示:
WITH simple 表示詞典使用的是內置的simple詞典,即僅做小寫轉換。根據(jù)需要可以靈活定義詞典和token映射,以實現(xiàn)屏蔽詞和同義詞歸并等功能。
比如我們看下面這個例子:
可以看到 江淮 這個詞組在查詢的時候被忽略了,我們啟用 j (abbreviation,簡稱)再看看結果:
所以實際使用中要設置合理的token types,過少將導致搜索結果不準確,過多將導致性能下降。此外,還有一些諸如 短詞復合: zhparser.multi_short = f 這一類的控制分詞結果的選項,根據(jù)實際使用酌情開啟。
python操作數(shù)據(jù)庫PostgreSQL
1.簡述
python可以操作多種數(shù)據(jù)庫,諸如SQLite、MySql、PostgreSQL等,這里不對所有的數(shù)據(jù)庫操作方法進行贅述,只針對目前
項目中用到的PostgreSQL做一下簡單介紹,主要包括python操作數(shù)據(jù)庫插件的選擇、安裝、簡單使用方法、測試連接數(shù)據(jù)庫成功。
2.數(shù)據(jù)庫操作插件的選擇
PostgreSQL至少有三個python接口程序可以實現(xiàn)訪問,包括PsyCopg、PyPgSQL、PyGreSQL(PoPy已經整合在PyGreSQL中),三個接口程序各有利弊,需要根據(jù)實踐選擇最適合項目的方式。
推薦使用PsyCopg,對python開發(fā)框架的兼容性都很好,本文中我們只討論這個插件。
3.PsyCopg的下載
官網下載psycopg2-2.5.1.tar.gz:
本文使用windows系統(tǒng)開發(fā),未使用官網版本,選擇psycopg2-2.4.2.win-amd64-py2.7-pg9.0.4-release.exe版,地址:
4.PsyCopg的安裝
直接exe,根據(jù)提示安裝即可.
5.PsyCopg的使用
py文件代碼:
__author__ = 'qiongmiaoer'
import psycopg2
# 數(shù)據(jù)庫連接參數(shù)
conn = psycopg2.connect(database="platoon", user="postgres", password="postgres", host="192.168.10.80", port="5432")
cur = conn.cursor()
cur.execute("CREATE TABLE test(id serial PRIMARY KEY, num integer,data varchar);")
# insert one item
cur.execute("INSERT INTO test(num, data)VALUES(%s, %s)", (1, 'aaa'))
cur.execute("INSERT INTO test(num, data)VALUES(%s, %s)", (2, 'bbb'))
cur.execute("INSERT INTO test(num, data)VALUES(%s, %s)", (3, 'ccc'))
cur.execute("SELECT * FROM test;")
rows = cur.fetchall() # all rows in table
print(rows)
for i in rows:
print(i)
conn.commit()
cur.close()
conn.close()
可參考psycopg官方文檔,介紹postgresql的使用
6. 輸出結果
"C:\Program Files (x86)\Python275\python.exe" E:/PycharmProjects/psycopgPyCharm/xiaoyu/temp.py
[(1, 1, 'aaa'), (2, 2, 'bbb'), (3, 3, 'ccc')]
(1, 1, 'aaa')
(2, 2, 'bbb')
(3, 3, 'ccc')
Process finished with exit code 0
7.分析
在插件psyCopg安裝后,在python命令下import
psycopg2,即可使用psycopg2中的方法對數(shù)據(jù)庫,根據(jù)測試結果的輸出可以看到我們成功地連接到了數(shù)據(jù)庫,創(chuàng)建了名為test的table,
添加了三條數(shù)據(jù),并成功讀取和輸出數(shù)據(jù),最后將查詢到的數(shù)據(jù)輸出print出來。
ps:
項目環(huán)境
windows8
python2.7.5
pyCharm2.7.3(開發(fā)環(huán)境)
psycopg2-2.4.2(插件)
最近我也在學PostgreSQL。主要是因為他是免費、開源的,所以在Linux下裝了這個。以前用慣了SQL Server的圖形界面,現(xiàn)在有些不習慣了。
但無論什么數(shù)據(jù)庫,SQL語句、表結構、視圖、存儲過程、觸發(fā)器,都是差不多的。這些都是最重要的,只是在數(shù)據(jù)庫的管理上,以及這些在數(shù)據(jù)庫系統(tǒng)的內部管理上不同而已。
當前文章:關于推薦postgresql的信息
分享URL:http://jinyejixie.com/article8/dsdgpop.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供自適應網站、外貿建站、手機網站建設、網站設計、Google、網頁設計公司
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)