PostgreSQL数据库常用命令.doc_第1页
PostgreSQL数据库常用命令.doc_第2页
PostgreSQL数据库常用命令.doc_第3页
PostgreSQL数据库常用命令.doc_第4页
PostgreSQL数据库常用命令.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Postgresql数据库常用命令psqlNamepsql - PostgreSQL 交互终端 Synopsispsql option. dbname username描述psql 是一个以终端为基础的 PostgreSQL 前端。它允许你交互地键入查询,把它们发出给 PostgreSQL, 然后看看查询的结果。另外,输入可以来自一个文件。还有, 它提供了一些元命令和多种类 shell 地特性来实现书写脚本以及对大量任务的自动化。选项-a-echo-all在读取行时向标准输出打印所有内容。 这个选项在脚本处理时比交互模式时更有用。这个选项等效于设置变量 ECHO 为 all。-A-no-align切换为非对齐输出模式。(缺省输出模式是对齐的。)-c command-command command声明 psql 将执行一条查询字串, command,然后退出。这一点在 shell 脚本里很有用。command 必须是一条完全可以被服务器分析的查询字串(也就是说,它不包含 psql特有的特性), 或者是一个反斜杠命令。这样你就不会混合 SQL 和 psql 元命令。要想混合使用,你可以把字串定向到 psql里,象这样: echo /x / select * from foo; | psql。如果命令字串包含多个 SQL 命令,那么他们在一个事务里处理, 除非在字串里包含了明确的 BEGIN/COMMIT 命令把他们分成多个事务。 这个和从 psql 的标准输入里给它填充相同字串不同。-d dbname-dbname dbname声明想要联接的数据库名称。等效于在命令行行上把 dbname 声明为第一个非选项参数。-e-echo-queries把所有发送给服务器的查询同时也拷贝到标准输出。 等效于把变量 ECHO 设置为 queries。-E-echo-hidden回显由/d和其他反斜杠命令生成的实际查询。 你可以使用这个命令学习 psql 的内部操作。 这等效于在psql里设置变量ECHO_HIDDEN。-f filename-file filename使用 filename作为命令的语句源而不是交互式读入查询。 在处理完文件后,psql 结束。这个选项在很多方面等效于内部命令 /i。如果 filename 是 -(连字符),则从标准输入读取。使用这个选项与用 psql 的提示符。例如,$ psql testdbWelcome to psql 8.0.0, the PostgreSQL interactive terminal.Type: /copyright for distribution terms /h for help with SQL commands /? for help with psql commands /g or terminate with semicolon to execute query /q to quittestdb=用户可以在这个提示符下键入SQL 查询。 通常,输入的行将在命令终止分号出现时送到服务器。 一行的终止并不结束命令!因此命令可以因清晰起见跨越好几行。如果命令发送出去而且执行没有错误, 命令结果会显示在屏幕上。当命令正在进行时,psql 同样还轮询由 LISTEN 和 NOTIFY. 生成的异步通知信号。元命令你在 psql 里输入的任何以不带引号的反斜杠(/)开头的东西都是 psql 元命令,这些命令是由 psql 自己处理的。这些命令也是令 psql 更可用于管理或书写脚本的原因。 元命令更常见的叫法是斜杠或反斜杠命令。一个 psql 命令的格式是反斜杠后面紧跟一个命令动词,然后是任意参数。 参数与命令动词和其他参数以任意个空白字符间隔。要在参数里面包含空白,你必须用单引号把它包围起来。 要在这样的参数里包含单引号,前面加一个反斜杠。 任何包含在单引号里的东西会被进一步进行类 C 的替换,把 /n (新行),/t (tab),/digits, /0digits和 /0xdigits (给出的十进制,八进制,或十六进制码的字符)替换掉。如果一个不带引号的参数以冒号(:)开头, 它会被当作一个psql 变量,并且该变量的值会最终成为真正的参数值。 (译注:类似 ecpg 和 pl/pgsql 的变量用法。)用“反勾号” (backticks ) 包围的内容被当作一个命令行传入 shell。 该命令的输出(删除了结尾的新行)被当作参数值。上面描述的逃逸(字符)序列在反勾号里也生效。有些命令以一个 SQL 标识的名称(如,一个表名)为参数。 这些参数遵循 SQL 语法关于双引号的规则: 不带双引号的标识强制成小写, 而双引号保护字母不受大小写转换,并且允许在标识符中使用空白。 在双引号中,成对的双引号在结果名字中分析成一个双引号。比如, FOOBARBAZ 解析成 fooBARbaz,而 A weird name 变成 A weird name。对参数的分析在碰到另一个不带引号的反斜杠时停止。 这里会认为是一个新的元命令的开始。特殊序列 /(双反斜杠)标识参数的结尾并将继续分析后面的 SQL 命令(如果存在的话)。这样 SQL 和 psql命令可以自由的在一行里面混合。 但是在任何情况下,一条元命令的参数不能延续超过行尾。下列元命令是已定义的: /a如果目前的表输出格式是不对齐的,切换成对齐的。 如果是对齐的,切换成不对齐。这条命令是为了向后兼容。参阅 /pset 获取一个更通用的解决方法。/cd directory 把当前工作目录改变到 directory。 没有参数是则改变到当前用户的家目录。提示: 要打印出你的当前工作目录,使用 /!pwd。/C title 把正在打印的表的标题设置为一个查询的结果或者取消这样的设置。 这条命令等效于 /pset title title. (这条命令的名称源于 caption,因为以前只是用于在一个 HTML 表里面设置标题。)/connect (或者 /c) dbname username 与一个新的数据库建立一个联接,使用/不用一个用户名。 前面的联接将关闭。如果 dbname 是 -,那么就假设是当前数据库名称。如果省略 username,则假设是当前用户名。作为一条特殊规则,不带任何参数运行/connect 将以缺省用户身份与缺省数据库连接(正如你不带任何参数运行 psql 一样。)如果联接失败(用户名错,访问拒绝等),那么将保留前面的联接-当且仅当在 psql 处于交互模式下如此。 如果运行的是非交互的脚本,处理会马上停止,并返回一个错误。 选择这样的区别是一方面为用户使用方便考虑,另一方面为保证脚本不会碰巧操作了错误的数据库的安全机制考虑的。/copy table ( column_list ) from | to filename | stdin | stdout | pstdin | pstdout with oids delimiter as character null as string csv quote as character escape as character force quote column_list force not null column_list 执行前端(客户端)拷贝。这是一个运行 SQL COPY 命令的操作, 不同的是 SQL COPY 是服务器在读写指明的文件,而 psql 读写文件并作为本地的文件系统和服务器之间的路由取出或写入数据。 这意味着文件访问性和权限都是本地用户的,而不是服务器的,因此不需要 SQL 超级用户权限。这条命令的语法是模拟 SQL COPY 命令的。 要注意的是由此而来,有一些特殊的分析规则应用于 /copy 命令。 尤其是变量替换规则和反斜杠代换规则不起作用。/copy table from stdin | stdout 分别基于命令输入和输出读/写。所有行都从发出命令的同一个源读取,直到读到了 /. 或者流达到 EOF。 输出发送到和命令输出相同的位置。要从 psql 的标准输入或者输出读/写, 使用 pstdin 或者 pstdout。这个选项用于把和 SQL 脚本嵌在一起的文件填充表很有用。提示: 此操作不象 SQL COPY 命令这样高效, 因为所有数据必须通过客户端/服务器联接。对于大数据量的操作,另一种方法更可行。/copyright显示 PostgreSQL 的版权和版本信息。/d pattern /d+ pattern 对于每个匹配pattern的关系(表,视图,索引或者序列), 显示所有列,它们的类型,表空间(如果不是缺省的)和任何特殊属性,象NOT NULL或缺省等只要存在。 如果实际上这个关系是一个表,任何已定义的索引,主键,唯一约束相关的索引,规则,约束,和触发器也同样显示出来, 如果关系是一个视图,还显示视图的定义。 (匹配模式在下面定义。)从 /d+ 来的命令也是一样的,只不过显示更多信息:任何与表的列关联的注解也都会显示, 还有就是表中出现的 OID。注意: 如果如果不带任何pattern调用 /d, 等效于 /dtvs,将显示一个所有表,视图和序列的列表。 这完全是出于方便的考虑。/da pattern 列出所有可用聚集函数,以及它们操作的数据类型。如果声明了 pattern,那么只显示匹配(正则表达式)的聚集函数。/db pattern /db+ pattern 列出所有可用的表空间。如果声明了 pattern, 那么只显示那些匹配模式的表空间。如果在命令名上附加了 +,那么每个对象都和与之相关的权限一起列出。/dc pattern 列出所有字符集之间的可用转换。如果声明了 pattern, 则只列出那些匹配模式的转换。/dC列出所有类型转换。/dd pattern 显示所有匹配 pattern 的描述,如果没有给出参数,显示所有可视对象。 但是不管怎样,只有那些有描述内容的对象才显示出来。 (对象包括聚集,函数,操作符,类型, 关系(表,视图,索引,序列,大对象),规则和触发器。)例如:= /dd version Object descriptions Schema | Name | Object | Description-+-+-+- pg_catalog | version | function | PostgreSQL version string(1 row)可以用 COMMENT SQL 命令生成对对象的描述。/dD pattern 列出所有可用域。如果声明了 pattern,那么只显示匹配的域。/df pattern /df+ pattern 列出所有可用函数,以及它们的参数和返回的数据类型。如果声明了 pattern,那么只显示匹配(正则表达式)的函数。如果使用了 /df+ 的形式,每个函数的附加信息,包括语言和描述也会显示出来。注意: 要查找接受或者返回特定类型的函数,使用你的分页器的搜索功能来滚动 /df 的输出。为了减少混乱,/df 并不显示数据类型的 I/O 函数。 这样是通过忽略那些接受或者返回类型 cstring 的函数实现的。/dg pattern 列出所有数据库组。如果声明了 pattern, 只显示那些匹配模式的名字。/distvS pattern 这不是实际的命令名称:字母 i,s, t,v,S 分别代表索引(index), 序列(sequence),表(table),视图(view)和系统表(system table)。 你可以以任意顺序声明任意或者所有这些字母获得这些对象的一个列表。 字幕 S 把列表限制于系统对象;如果没有 S,则只显示非系统对象。 如果在命令名上附加了 +,那么还会列出和每个对象相关联的描述,如果有的话。如果声明了 pattern,那么只列出匹配模式的对象。/dl这是 /lo_list的别名,显示一个大对象的列表。/dn pattern /dn+ pattern 列出所有可用模式(名字空间)。如果声明了 pattern (一个正则表达式),那么只列出匹配模式的模式名。不显示非本地的临时模式。 如果在命令名上附加了 +,那么每个对象都和与之相关的权限和注释一起列出(如果有的话)。/do pattern 列出所有可用操作符,以及它们的操作数和返回的数据类型。 如果声明了 pattern,那么只显示匹配模式的操作符。/dp pattern 生成一列可用的表和它们相关的权限。 如果声明了 pattern, 那么只列出名字可以匹配模式的表。命令 GRANT 和 REVOKE 用于设置访问权限。参阅 GRANT 获取更多信息。/dT pattern /dT+ pattern 列出所有数据类型或只显示那些匹配 pattern的。这条命令的 /dT+ 形式显示更多信息。/du pattern 列出所有已配置用户或者只列出那些匹配 pattern 的用户。/edit (or /e) filename 如果声明了 filename, 则编辑此文件并且在编辑器退出后将其内容拷贝回查询缓冲区。 如果没有给出参数,则把当前查询缓冲区内容拷贝到一个临时文件然后以相同方式编辑。然后根据一般的psql规则重新分析查询缓冲区, 这时整个缓冲区当作一个单行。(因此你无法用这个方法制作“脚本”,用 /i 做脚本。) 这还意味着如果该查询以分号结尾(或者包含分号),它就会马上被执行。否则它只是在查询缓冲区里等待。提示: psql 搜索环境变量 PSQL_EDITOR,EDITOR 和 VISUAL(以此顺序)查找要用到哪个编辑器。如果上面的都没有设置,那么在 Unix 系统上使用 vi,在 Windows 系统上用 notepad.exe。/echo text . 向标准输出打印参数,用一个空格分隔并且最后跟着一个新行。 这个特性在显示脚本的输出时会有用。例如:= /echo dateTue Oct 26 21:40:57 CEST 1999果第一个参数是一个无引号的 -n,那么不会写出结尾的新行。提示: 如果你使用 /o 命令重定向你的查询的输出,你可能会用 /qecho取代这条命令。/encoding encoding 设置客户端字符编码方式。不带参数时,这条命令显示当前的编码方式。/f string 为不对齐的查询输出设置域分隔符。缺省时是竖条(|)。 参阅 /pset 获取设置输出选项的通用方法。/g filename | |command 把当前的查询输入缓冲区的内容发送给服务器并且把查询的输出存储到可选的 filename 或者把输出定向到一个独立的在执行 command 的 Unix shell。 单独一个 /g 实际上等效于一个分号。一个带有参数的/g 是一次性的 /o命令的代用品。/help (或者 /h) command 给出指定 SQL 命令的语法帮助。如果没有给出 command ,那么 psql 将列出可获得语法帮助的所有命令。如果 command 是一个星号(*),则显示所有 SQL 命令的语法帮助。注意: 为简化敲击,包含多个单字的命令不需要引起。因此键入 /help alter table 是正确的。/H打开 HTML 查询输出格式。如果 HTML 格式已经打开,则切换回缺省的对齐的文本格式。 这个命令是为了兼容和方便,参阅 /pset 获取设置其他输出选项的内容。/i filename从文件filename中读取并把其内容当作从键盘输入的那样执行查询。注意: 如果你想在屏幕上看到读入的行,你必须对所有行设置变量 ECHO 为 all。/l (或 /list)/l+ (或 /list+)列出服务器上所有数据库的名字和它们的所有者以及字符集编码。在命令名称后面加一个 + 还可以看到对数据库的描述。/lo_export loid filename从数据库里读取 OID 为 loid 的大对象并把她写到 filename里。 注意这个功能与服务器函数 lo_export 有些微小的区别, lo_export 运行时带着运行数据库服务器的用户权限, 而且是在服务器的文件系统上。提示: 使用 /lo_list 查看大对象的 OID。/lo_import filename comment 把文件存储为一个 PostgreSQL 大对象。可以带着一个该对象的注解选项。例如:foo= /lo_import /home/peter/pictures/photo.xcf a picture of melo_import 152801响应表明此大对象得到一个对象标识 152801,如果你还想访问该对象,就应该把这个对象标识记住。 因此,我们建议总是给每个对象关联一个人类可读的注解。那样就可以用 /lo_list 命令看到这些注解。注意这条命令与服务器端的 lo_import 有一些区别,因为这条命令是本地用户在本地文件系统上操作, 而不是以服务器用户在服务器文件系统上操作。/lo_list显示一个目前存储在该数据库里的所有 PostgreSQL 大对象和它们的所有者的列表。/lo_unlink loid从数据库里删除OID为 loid 的大对象。提示: 使用 /lo_list 查找大对象的 OID。/o filename | |command 把后面的查询结果保存到文件 filename 里或者把后面的查询结果定向到一个独立的 Unix shell 执行 command。 如果没有声明参数,查询输出重置为标准输出。查询结果包括所有表,命令响应和从数据库服务器来的提示, 同样还有各种各样查询数据库的反斜杠命令的输出(如 /d),但是没有错误信息。提示: 要用文本分散查询结果之间的输出,用 /qecho。/p打印当前查询缓冲区到标准输出。/pset parameter value 这条命令设置影响查询结果表输出的选项。parameter 描述要设置的选项是哪一个。value 的语意也取决于它。可调节的打印选项有: format设置输出格式为 unaligned,aligned,html, 或 latex之一。允许使用唯一的缩写。(这也意味着一个字母就够了。)Unaligned (不对齐)把一条记录的所有字段都输出到一行, 用当前有效的域分隔符分隔。这主要用于生成那些要被其他程序读取的输出(tab分隔,逗号分隔)。 Aligned (对齐)模式是标准的,人类可读的,格式化好了的文本输出,也是缺省。 HTML 和 LaTeX 模式把表输出为可用于文档里的对应标记语言。它们还不是完整的文档! (可能对于 HTML 变化还不是太大,但是在 LaTeX 里,你必须有一个完整的文档包装器。)border第二个参数必须是一个数字。通常,数字越大,表就有越宽的边界和越多的线, 但是这个参数取决于实际的格式。在HTML模式里, 这个参数会直接翻译成border=.属性,在其他的模式里, 只有值 0 (无边界),1 (内部分隔线)和 2 (表框架)有意义。expanded )(或者 x)在正常和扩展格式之间切换。当打开扩展格式时,所有的输出都是两列, 字段名称在左,数据在右。 这个模式在数据无法放进通常的水平模式的屏幕时很有用。所有四种输出模式都支持扩展格式。null第二个参数是一个字串,用以代表字段的值为 null 时的打印输出。 缺省是什么都不打,这样很容易和类似一个空字串混淆。 因此,我们可能选择 /pset null (null)。fieldsep声明在非对齐模式时的域分隔符。 这样我们就可以创建其他程序希望的tab或逗号分隔的输出。要设置 tab 域分隔符, 键入 /pset fieldsep /t。缺省域分隔符是 | (一个竖条符号)。footer切换缺省脚注 (x rows)。recordsep声明在非对齐模式时的记录分隔符。缺省是换行符。tuples_only (或者 t)在完全显示和只显示记录之间切换。 完全显示将显示象列头,标题和各种脚注等信息。 在这个模式下,只显示记录模式将只显示实际的表数据。title text 为任何随后打印的表设置标题。 这个参数可以用于给你的输出一个描述性标记。 如果不带参数,重置标题。tableattr (或者 T) text 允许你声明放在 HTML table 标记里的任何属性。例如,可以是 cellpadding 或 bgcolor。注意你可能不需要在这里声明 border ,因为已经在 /pset border 里用过了。pager控制查询和psql帮助输出的分页器。如果设置了环境变量 PAGER, 输出被定向到指定程序,否则使用系统缺省(比如 more)。如果关闭了分页器,则不使用它,如果打开了,程序只在需要的时候使用分页器,也就是说, 输出是到终端,而且那个表很可能无法与屏幕匹配。 (psql 在决定何时分页时不是很完美。) /pset pager 开关分页器。我们也可以把分页器设置为 always,导致我们在任何情况下都使用分页器。可以在 例子 节看到这些不同格式输出的示例。提示: 有很多用于/pset的快速命令。参阅 /a,/C,/H, /t,/T,和 /x。注意: 无参数运行 /pset是错误的。 以后这样调用将显示当前打印选项状态。/q退出psql程序。/qecho text . 这条命令等效于 /echo ,区别是所有输出将写入由 /o设置的输出通道。/r重置(清空)查询缓冲区。/s filename 将命令行历史打印出或是存放到 filename。 如果省略 filename, 历史将输出到标准输出。这个选项只有在 psql 配置成使用 GNU Readline 库后才生效。注意: 在当前版本里,这个( GNU 历史库)不再是必须的了, 实际上,在程序结束时自动保存命令行历史。每次 psql 启动都会装载命令行历史。/set name value . 设置内部变量 name 为 value 或着如果给出了多于一个值, 设置为所有这些值的联接结果。如果没有给出第二个参数,只设变量不设值。要重置一个变量,使用 /unset 命令。有效的变量名可以包含字符,数字和下划线。 参阅下面的 变量 获取细节。尽管你可以设置任何变量为任意值, psql对一些变量特殊对待。它们在关于变量的节里面有文档。注意: 这条命令是完全和 SQL 命令 SET 不一样的。/t切换输出的列/字段名的信息头和行记数脚注。 这条命令等效于 /pset tuples_only,提供主要为了方便。/T table_options允许你在使用HTML输出模式时声明放在 table 标记里的属性。 这条命令等效于 /pset tableattr table_options。/w filename | |command将当前查询缓冲区输出到文件 filename 或者定向到 Unix 命令 command。/x切换扩展行格式。等效于 /pset expanded。/z pattern 生成一个带有访问权限列表的数据库中所有表,视图和序列的列表。 如果给出任何pattern,则被当成一个规则表达式, 只显示匹配的表,视图和序列。命令 GRANT 和 REVOKE 用于设置访问权限。 参阅 GRANT 获取更多信息。这是 /dp(显示权限)的别名。/! command 返回到一个独立的 Unix shell 或者执行 Unix 命令 command。 参数不会被进一步解释,shell 将看到全部参数。/?获得关于反斜杠命令的帮助信息。各种 /d 命令都接受一个 pattern 参数,声明要显示的对象名字。* 表示任何字符序列, 而 ? 表示任何单个字符。(这个表示法和 Unix 的 shell 文件名模式兼容。) 高级用户也可以使用正则表达式表示法,比如字符表,0-9 这样的东西来匹配任意数字。 要让任何这些模式匹配字符可以安字面方式解析,那就应该用双引号包围它们。一个包含(无引号的)句点的模式会被解析承一个模式名的模式后面跟着一个对象名的模式。 比如, /dt foo*.bar* 显示所有以foo 开头的模式里的以 bar 开头的表名字。 如果没有出现句点,那么这个模式只匹配在当前模式搜索路径中可见的对象。如果完全省略 pattern 参数, 那么 /d 命令显示所有在当前模式搜索路径中可见的对象。 要查阅在数据库中的所有对象,使用模式 *.*。高级特性变量psql 提供类似通常 Unix 命令 shell 那样的变量替换特性。 变量只是简单的名称/数值对, 这里的值可以是任何长度的任何值。要设置一个变量,使用 psql 元命令 /set:testdb= /set foo bar把变量foo 设置为值 bar。 要检索变量的内容,在变量名前面放上冒号然后把它用在任意斜杠命令里:testdb= /echo :foobar注意: /set 的参数服从和其他命令一样的替换规则。 因此你可以构造有趣的引用,象 /set :foo something 这样, 获得分别象Perl或 PHP那样有名的软连接(soft links)或变量 变量。 不幸的是(或者 万幸的?),用这些构造不能做任何有用的事情。另一方面, /set bar :foo 是一个非常有效的拷贝变量的方法。如果你不带第二个参数调用/set, 那么只是设置这个变量而没有值。 要重置(或删除)一个变量,使用命令 /unset。psql的内部变量可以包括任意顺序, 任意数量的字母,数字和下划线。 有一些常用变量被 psql 另眼相待。它们是一些选项设置, 这些选项在运行时可以通过改变变量的值或者改变一些应用的表现状态而改变。 尽管你可以把这些变量用于其他用途,但是我们不鼓励这么做,因为程序的特性可能会很快变得非常奇怪。 通常,所有特殊对待的变量都是由大写字母组成(可能还有数字和下划线)。 为了保证和未来的最大限度的兼容性,请避免使用这样的变量。 下面是一个所有特殊对待的变量列表。AUTOCOMMIT如果是 on(缺省),那么每个 SQL 命令都在成功完成后自动提交。 要推迟这种模式下的提交,你必须输入一个 BEGIN 或者 START TRANSACTION SQL 命令。 如果是 off 或者未设置,SQL 命令不会提交,知道你明确地发出 COMMIT 或者 END。 关闭自动提交的模式是通过为你明确发出一个 BEGIN 实现的, 它是放在任何尚未在一个事务块中并且自己不是 BEGIN 或者其它事务控制命令也不是那些不能在事务块里执行的命令 (比如 VACUUM)的前面。注意: 在关闭自动提交的模式下,你必须明确放弃任何失败的事务,方法是执行 ABORT 或者 ROLLBACK。 还要注意如果你不提交就退出会话,你的工作会丢失。注意: 自动提交打开方式是 PostgreSQL 传统的行为, 但是关闭自动提交更接近 SQL 规范。如果你喜欢关闭自动提交,你应该在你的 .psqlrc 文件里设置它。DBNAME你正在联接着的数据库名称。 每次你与一个数据库联结都会设置这个值(包括程序启动),但是可以删除。ECHO如果置为 all, 输入的或者来自键盘或者一个脚本的所有行在分析或执行前都写到标准输出。 要在程序启动时声明这些,使用 -a如果设置为 queries, psql 只是在查询发送给服务器之前打印出来。 实现这个功能的命令行选项是 -e。ECHO_HIDDEN当设置了这个变量并且一个反斜杠命令查询数据库时,首先显示查询。 这样你可以学习 PostgreSQL 内部的东西并且在你自己的程序里提供类似功能。如果你设置该变量的值为 noexec,查询只是显示出来但是实际上不发送到服务器和执行。ENCODING当前的客户端字符集编码。HISTCONTROL如果这个变量设置为 ignorespace, 以空格开始的行将不会进入历史列表。 如果设置为变量 ignoredups, 与以前历史记录里匹配的行也不会进入历史记录。值 ignoreboth是上面两个的结合。 如果删除此变量或者其值为任何与上面的值不同的东西, 所有交互模式读入的行都被保存入历史列表。注意: 这个特性是无耻地从 Bash 里剽窃来的。HISTSIZE存在命令历史里的命令的个数。缺省值是 500。Note: 这个特性是无耻地从 Bash里剽窃来的。HOST当前你正联接的数据库服务器主机。 这是在每次你与数据库联接时(包括程序启动)设置的,但是可以删除。IGNOREEOF如果删除此变量,向一个交互的 psql会话发送一个 EOF (通常是 Control-D)将终止应用。如果设置为一个数字值,那么在应用终止前该数值的 EOF 字符将被忽略。 如果设置了此变量但是没有数字值,缺省是 10。注意: 这个特性是无耻地从 Bash 里剽窃来的。LASTOID最后影响的oid值,即为从一条 INSERT 或 lo_insert 命令返回的值。 此变量只保证在下一条 SQL 命令的结果显示之前有效。ON_ERROR_STOP缺省时,如果非交互的脚本碰到一个错误,象一条错误的 SQL 命令或者内部元命令,处理会继续进行。 这是 psql 的传统特性, 但是有时候我们不太希望这样。如果设置了这个变量,脚本处理将马上停止。 如果该脚本是从另外一个脚本调用的,那个脚本也会按同样的方式停止。 如果最外层的脚本不是从一次交互的 psql 会话中调用的而是用 -f 选项调用的,psql 将返回错误代码 3,以示这个情况与致命错误条件的区别(错误代码 1)。PORT当前你正在联接的数据库服务器的端口。 这是在每次你与数据库联接时(包括程序启动)设置的,但是可以删除。PROMPT1PROMPT2PROMPT3这些指明psql 显示的提示符看上去象什么。 参阅下面的 提示符。QUIET这个变量等效于命令行选项 -q。 可能在交互模式下没有什么用。SINGLELINE这个变量等效于设置命令行选项 -S。你可以在运行时删除或设置它。SINGLESTEP这个变量等效于命令行选项 -s。USER当前你正用于联接的数据库用户。 这是在每次你与数据库联接时(包括程序启动)设置的,但是可以删除/重置。VERBOSITY这个选项可以设置为值 default,verbose,或者 terse 以控制错误报告的冗余行。SQL 代换一个附加的 psql 变量的有用特性是你可以把它们替换(代换)成正规的 SQL 语句。这样做的语法同样还是变量名前面加一个冒号(:)。testdb= /set foo my_tabletestdb= SELECT * FROM :foo;将会查询表my_table。变量的值是逐字拷贝的, 所以它甚至可以包含不对称的引号或反斜杠命令。你必须保证你输入的东西是有意义的。 变量替换将不会在引号引起来的 SQL 语句里面发生。利用这个功能的一个时髦的应用是通过使用一个随后的语句中最后插入的 OID 建立一个外键仿真场景。 另一个可能用到这个机制的地方是把一个文件的内容拷贝到一个字段里面去。 首先把文件装载到一个变量然后象上面那样处理。testdb= /set content / cat my_file.txt /testdb= INSERT INTO my_table VALUES (:content);这样处理的一个可能问题是 my_file.txt 可能包含单引号。这些需要被逃逸以免在处理第三行时不会导致语法错误。 可以使用程序 sed来做这个处理:testdb= /set content / sed -e s/g my_file.txt /观察正确数量的反斜杠(6)!你可以这样解释它:在 psql 分析完这行后,它把 sed -e s/g 数据库服务器正在侦听的端口号。%n数据库会话的用户名。 (这个值的扩展可能在一个数据库会话过程中因为 SET SESSION AUTHORIZATION 命令而改变。)%/当前数据库名称。%类似 %/, 但如果数据库是你的缺省数据库输出是 (波浪线(tilde)。%#如果会话用户是数据库超级用户,使用 #,否则用。 (这个值的扩展可能在一个数据库会话过程中因为 SET SESSION AUTHORIZATION 命令而改变。)%R对于 prompt 1 通常是 =,但是如果是单行模式则是 ,而如果会话与数据库断开(如果 /connect 失败可能发生)是 !。对于 prompt 2 该序列被 -,*,一个单引号,一个双引号或者一个美元符代替,这取决于 psql是否等待更多的输入(因为查询没有终止,或着正在一个 /* . */注释里面,或者因为你在引号或者美元符扩展里面)。对于 prompt 3 该序列不解释成任何东西。%x事

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论