重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
postgresql中可以使用pg_dump来备份数据库。pg_dump是用于备份PostgreSQL数据库的工具。它可以在数据库正在使用的时候进行完整一致的备份,并不阻塞其它用户对数据库的访问。
成都创新互联公司专注于江干企业网站建设,响应式网站开发,成都商城网站开发。江干网站建设公司,为江干等地区提供建站服务。全流程按需求定制制作,专业设计,全程项目跟踪,成都创新互联公司专业和态度为您提供的服务
用法:
pg_dump [选项]... [数据库名字]
一般选项:
-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 输出版本信息, 然后退出
示例:
备份数据库,指令如下:
pg_dump -h 164.82.233.54 -U postgres databasename C:databasename.bak
开始-运行-cmd 弹出dos控制台;然后 在控制台里,进入PostgreSQL安装目录bin下:
cd C:Program FilesPostgreSQL9.0bin
最后执行备份指令:
pg_dump -h 164.82.233.54 -U postgres databasename C:databasename.bak
指令解释:
pg_dump 是备份数据库指令,164.82.233.54是数据库的ip地址(必须保证数据库允许外部访问的权限哦~),当然本地的数据库ip写 localhost;
postgres 是数据库的用户名;databasename 是数据库名。
意思是导出到C:databasename.bak文件里,如果没有写路径,单单写databasename.bak文件名,那么备份文件会保存在C: Program FilesPostgreSQL9.0bin 文件夹里。
推荐学习《Python教程》。
PostgreSQL自带有一个简易的全文检索引擎,可以实现小规模数据量的全文检索功能。本文我们将引导介绍一下这个功能,对于小数据量的搜索这个功能是足够使用的,而无需搭建额外的ES等重量级的全文检索服务器。
PG的全文检索操作符是 @@ ,当一个 tsvector (文档)和 tsquery (条件)匹配时返回 true ,并且前后顺序无影响:
和普通的SQL查询一样,只要在 WHERE 条件中使用这个符号就代表使用全文检索条件筛选文档了。如:
@@ 操作符支持隐式转换,对于 text 类型可以无需强类型转换( ::tsvector 或 to_tsvector(config_name, text) ),所以这个操作符实际支持的参数类型是这样的:
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索引 。创建一个 GIN 索引的范例:
也可以是一个连接列:
还可以单独创建一个 tsvector 列,为这个列创建索引:
除了普通的 ORDER BY 条件之外,PostgreSQL为全文检索提供了两个可选的排序函数 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 ,以便实现基于 权重 的排序。
此外,对于PostgreSQL 9.6以上的版本还可以使用 RUM index 排序。(注意,这个是扩展,默认不包含)。
PostgreSQL默认的分词字典中并不包含中文分词字典,因此我们必须手工引入。目前一个比较好的项目是 zhparser ,同时这个插件也是阿里云的RDS默认包含的。安装和启用没什么好说的。值得一提的是分词配置参数。
在 CREATE EXTENSION 之后,必须配置分词参数才能正确进行分词和查找,否则什么都查不到。官方文档提供的一个配置策略是:
n,v,a,i,e,l 这几个字母分别表示一种token策略,只启用了这几种token mapping,其余则被屏蔽。具体支持的参数和含义可以用 \dFp+ zhparser 显示:
WITH simple 表示词典使用的是内置的simple词典,即仅做小写转换。根据需要可以灵活定义词典和token映射,以实现屏蔽词和同义词归并等功能。
比如我们看下面这个例子:
可以看到 江淮 这个词组在查询的时候被忽略了,我们启用 j (abbreviation,简称)再看看结果:
所以实际使用中要设置合理的token types,过少将导致搜索结果不准确,过多将导致性能下降。此外,还有一些诸如 短词复合: zhparser.multi_short = f 这一类的控制分词结果的选项,根据实际使用酌情开启。
python操作数据库PostgreSQL
1.简述
python可以操作多种数据库,诸如SQLite、MySql、PostgreSQL等,这里不对所有的数据库操作方法进行赘述,只针对目前
项目中用到的PostgreSQL做一下简单介绍,主要包括python操作数据库插件的选择、安装、简单使用方法、测试连接数据库成功。
2.数据库操作插件的选择
PostgreSQL至少有三个python接口程序可以实现访问,包括PsyCopg、PyPgSQL、PyGreSQL(PoPy已经整合在PyGreSQL中),三个接口程序各有利弊,需要根据实践选择最适合项目的方式。
推荐使用PsyCopg,对python开发框架的兼容性都很好,本文中我们只讨论这个插件。
3.PsyCopg的下载
官网下载psycopg2-2.5.1.tar.gz:
本文使用windows系统开发,未使用官网版本,选择psycopg2-2.4.2.win-amd64-py2.7-pg9.0.4-release.exe版,地址:
4.PsyCopg的安装
直接exe,根据提示安装即可.
5.PsyCopg的使用
py文件代码:
__author__ = 'qiongmiaoer'
import psycopg2
# 数据库连接参数
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中的方法对数据库,根据测试结果的输出可以看到我们成功地连接到了数据库,创建了名为test的table,
添加了三条数据,并成功读取和输出数据,最后将查询到的数据输出print出来。
ps:
项目环境
windows8
python2.7.5
pyCharm2.7.3(开发环境)
psycopg2-2.4.2(插件)
最近我也在学PostgreSQL。主要是因为他是免费、开源的,所以在Linux下装了这个。以前用惯了SQL Server的图形界面,现在有些不习惯了。
但无论什么数据库,SQL语句、表结构、视图、存储过程、触发器,都是差不多的。这些都是最重要的,只是在数据库的管理上,以及这些在数据库系统的内部管理上不同而已。