PostgreSQL 常用备忘
1.如何把开始的建表语句给导出来? a.导出一个 pg_dump -d dbname -t tablename -s > sql.txt b.全部一起出来pg_dump -d dbname -s > sql.txt 可以指定 function,view,trigger,type 2.热备份 pg_standby 支持创建“热备份”的数据库服务器。它被设计成是可用于生产环境的程序,并且还包括可以客户化的模版,这样用户可以自己进行定制修改。 要用 pg_standby 配置一个备份服务器,把这些放到它的 recovery.conf 配置文件中: restore_command = 'pg_standby archiveDir %f %p %r' 这里的 archiveDir 是恢复需要的 WAL 段文件所在的目录。 pg_standby 的命令行的完整的语法是: pg_standby [ option ... ] archivelocation nextwalfile xlogfilepath [ restartwalfile ] 当运行在 restore_command 里面时,应该分别为 nextwalfile 和 xlogfilepath 分别声明 %f 和 %p 红,以提供恢复所需要的实际文件和路径。 如果声明了 restartwalfile,通常是使用 %r 宏,那么所有逻辑上在这个文件之前的文件将被从 archivelocation 中删除。这样就令需要保存的文件数目最小化,而同时还保存崩溃重启的能力。如果 archivelocation 是一个用于这个备份服务器的临时的阶段性区域,那么使用这个参数就很合适,但如果 archivelocation 的目录是长期的 WAL 归档区域,那就不合适。 pg_standby 假设 archivelocation 是一个拥有服务器的用户可读的目录。如果声明了 restartwalfile(或 -k),那么 archivelocation 还必须是可写的。
例子在 Linux 或者 Unix 系统里,你可以使用: archive_command = 'cp %p .../archive/%f' restore_command = 'pg_standby -l -d -s 2 -t /tmp/pgsql.trigger.5442 .../archive %f %p %r 2>>standby.log' 这里的 archive 目录物理上位于备份服务器上,因此 archive_command 是通过 NFS 访问之的,但是文件对备份服务器而言是本地的(允许使用 ln)。这样就可以:
在 Windows 上,你可以用: archive_command = 'copy %p ...//archive//%f' restore_command = 'pg_standby -d -s 5 -t C:/pgsql.trigger.5442 .../archive %f %p %r 2>>standby.log' 请注意在 archive_command 里面,反斜杠需要写双份,而 restore_command 里面不需要。这样写就会:
因为 Windows 例子在两边都使用了 copy,所以两个服务器都可以透过网络访问 archive 目录。 3.如何让数据按照中文排序PG提供了很好的编码转换函数:convert(),使用这个函数,我们可以有效地把UTF8编码转换成GBK编码。比如,要把UTF8编码转换成GBK编码: select convert('UTF8编码字串或字段' using utf8_to_gbk); 这样就可以了,那么,是不是我们可以这样实现GBK的读音序编码呢: select * from table order by convert( column_need_to_sort_in_utf8 using utf8_to_gbk); 还不行 因为没有内置的TEXT到BYTEA的转换函数,我们需要自己做一个: 这个函数很简单,利用了PG提供的text_in()和bytea_out的输入输出转换函数,直接生成BYTEA的数据。 于是,我们可以这样进行中文的语音排序了: select * from table order by text2bytea(convert(column_need_to_sort_in_utf8 using utf8_to_gbk)); 4.怎么给时间日期字段赋值成当前日期时间?CREATE TABLE test (x int,modtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP );5.vista如何安装postgreSQL? 6.如何只选择一个查询结果随机的一行
SELECT cols FROM tab ORDER BY random() LIMIT 1; 7.如何更改一个字段的数据类型? 8.我怎样检测一个字段是否为 NULL
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |