Greenplum交互式命令行psql

0    165    2

Tags:

👉 本文共约26578个字,系统预计阅读时间或需100分钟。

psql

Greenplum数据库的交互式命令行接口

概要

描述

psql是Greenplum数据库的基于终端的前端。 它使您能够以交互方式键入查询,将其发布到Greenplum数据库,并查看查询结果。 或者,输入可以来自文件。 此外,它提供了许多元命令和各种类似于shell的功能,以帮助编写脚本和自动化各种任务。

选项

-a | —echo-all

读取时将所有非空输入行打印到标准输出。 (这不适用于以交互方式读取的行。) 这等效于将变量ECHO设置为all。

-A | —no-align

切换到不对齐输出模式。 (默认输出模式已对齐。)

-c ‘command’ | —command=’command’

指定psql将执行指定的命令字符串,然后退出。 这在shell脚本中很有用。 command必须是服务器可以完全解析的命令字符串,也可以是单个反斜杠命令。 因此,您不能将SQL和psql元命令与此选项混合使用。 为此,您可以将字符串通过管道传递到psql中,如下所示:

(\是分隔符元命令。)

如果命令字符串包含多个SQL命令,则它们将在单个事务中进行处理, 除非字符串中包含明确的BEGIN/COMMIT命令以将其分为多个事务。 这与将相同的字符串提供给psql的标准输入时的行为不同。 此外,仅返回最后一个SQL命令的结果。

-d dbname | —dbname=dbname

指定要连接的数据库的名称。这等效于在命令行上将dbname指定为第一个非选项参数。

如果此参数包含\=符号或以有效的URI前缀(postgresql://或postgres://)开头,则将其视为conninfo字符串。 有关更多信息,请参见PostgreSQL文档中的连接字符串

-e | —echo-queries

将所有发送到服务器的SQL命令复制到标准输出。

-E | —echo-hidden

回显由\d和其他反斜杠命令生成的实际查询。 您可以使用它来研究psql的内部操作。 这等效于将变量ECHO_HIDDEN设置为on。

-f filename | —file=filename

使用filename作为命令源,而不是交互读取命令。 处理完文件后,psql终止。 在许多方面,这等效于元命令\i。

如果文件名是-(连字符),则将读取标准输入,直到EOF指示或\q元命令为止。 但是请注意,在这种情况下不使用Readline(就像已指定-n一样)。

使用此选项与编写psql < filename稍有不同。 通常,两者都可以达到您的期望,但是使用-f可以启用一些不错的功能,例如带有行号的错误消息。 使用此选项还可能会减少启动开销。 另一方面,使用shell的输入重定向的变体在理论上可以保证产生与您手工输入的所有内容完全相同的输出。

-F separator | —field-separator=separator

使用指定的分隔符作为未对齐输出的字段分隔符。

-H | —html

打开HTML表格输出。

-l | —list

列出所有可用的数据库,然后退出。其他非连接选项将被忽略。

-L filename | —log-file=filename

除正常输出目标外,还将所有查询输出写入指定的日志文件。

-n | —no-readline

不要将Readline用于行编辑,也不要使用命令历史记录。 剪切和粘贴时,这对于关闭选项卡扩展很有用。

-o filename | —output=filename

将所有查询输出放入指定的文件。

-P assignment | —pset=assignment

允许您在命令行上以\pset样式指定打印选项。 请注意,这里必须用等号(而不是空格)分隔名称和值。 因此,要将输出格式设置为LaTeX,可以编写-P format=latex。

-q | —quiet

指定psql应该安静地工作。 默认情况下,它打印欢迎消息和各种信息输出。 如果使用此选项,则不会发生任何情况。 这对于-c选项很有用。 这等效于将变量QUIET设置为on。

-R separator | —record-separator=separator

使用separator作为未对齐输出的记录分隔符。

-s | —single-step

以单步模式运行。 这意味着在将每个命令发送到服务器之前都会提示用户,并且还可以选择取消执行。 使用它来调试脚本。

-S | —single-line

在单行模式下运行,其中新行像分号一样终止SQL命令。

-t | —tuples-only

关闭列名和结果行计数页脚等的打印。 此命令等效于\pset tuples_only,并且为方便起见而提供。

-T table_options | —table-attr=table_options

允许您指定要放置在HTML表格标记内的选项。 有关详细信息,请参见\pset。

-v assignment | —set=assignment | —variable=assignment

执行变量分配,例如\set meta命令。 请注意,必须在命令行上用等号分隔名称和值(如果有)。 要取消设置变量,请取消等号。 要将变量设置为空值,请使用等号,但不要使用该值。 这些分配是在启动的非常早期阶段完成的,因此保留给内部使用的变量可能会在以后被覆盖。

-V | —version

打印psql版本并退出。

-x | —expanded

打开扩展表格式模式。

-X | —no-psqlrc

不要读取启动文件(系统范围内的psqlrc文件或用户的~/.psqlrc文件都不能读取)。

-z | —field-separator-zero

将未对齐输出的字段分隔符设置为零字节。

-0 | —record-separator-zero

将未对齐输出的记录分隔符设置为零字节。 这对于例如与xargs -0配合非常有用。

-1 | —single-transaction

当psql执行脚本时, 添加此选项会将BEGIN/COMMIT包装在脚本周围,以将其作为单个事务执行。 这样可以确保所有命令都成功完成,或者不应用任何更改。

如果脚本本身使用BEGIN,COMMIT或ROLLBACK,则此选项将不会达到预期的效果。 另外,如果脚本包含无法在事务块内执行的任何命令,则指定此选项将导致该命令(并因此导致整个事务)失败。

-? | —help

显示有关psql命令行参数的帮助,然后退出。

连接选项

-h host | —host=host

运行Greenplum数据库master数据库服务器的计算机的主机名。 如果未指定,则从环境变量PGHOST读取或默认为localhost。

在master主机上启动psql时,如果host值以斜杠开头,则它将用作UNIX域套接字的目录。

-p port | —port=port

Greenplum master数据库服务器正在侦听连接的TCP端口。 如果未指定,则从环境变量PGPORT读取或默认为5432。

-U username | —username=username

要用作连接的数据库角色名称。 如果未指定,则从环境变量PGUSER读取或默认为当前系统角色名称。

-W | —password

强制输入密码提示。 每当服务器请求密码验证时,psql都会自动提示输入密码。 但是,当前密码请求检测并不完全可靠,因此此选项会强制提示。 如果未发出密码提示,并且服务器要求密码验证,则连接尝试将失败。

-w —no-password

不发出密码提示。 如果服务器要求密码验证,而其他方式(例如.pgpass文件)无法使用密码,则连接尝试将失败。 此选项在没有用户输入密码的批处理作业和脚本中很有用。

注意:此选项在整个会话中保持设置状态,因此会影响元命令\connect的使用以及初始连接尝试。

退出状态

如果psql正常完成,它将返回0到shell程序; 如果发生自身的致命错误(内存不足,找不到文件),则返回1; 如果与服务器的连接断开并且会话不是交互式的,则返回2; 如果脚本中发生错误,并设置了变量ON_ERROR_STOP,则返回3。

用法

连接到数据库

psql是Greenplum数据库的客户端应用程序。 为了连接到数据库,您需要知道目标数据库的名称,Greenplum主服务器的主机名和端口号以及要用作连接的数据库用户名。 可以通过命令行选项(分别为-d,-h,-p和-U)告知psql这些参数。 如果找到的参数不属于任何选项,它将被解释为数据库名称(或用户名,如果已经给出数据库名称)。 并非所有这些选项都是必需的;有一些可用的默认值。 如果省略主机名,则psql将通过UNIX域套接字连接到本地主机上的master服务器,或者通过TCP/IP连接到没有UNIX域套接字的计算机上的localhost。 默认的master端口号是5432。 如果为master使用其他端口,则必须指定端口。 默认数据库用户名是您的操作系统用户名,默认数据库名也是如此。 请注意,您不能仅以任何用户名连接到任何数据库。 您的数据库管理员应已将您的访问权限告知您。

当默认值不合适时,可以通过将任何或所有环境变量PGAPPNAME, PGDATABASE,PGHOST,PGPORT和PGUSER设置为适当的值来节省键入时间。

拥有~/.pgpass文件也很方便,可以避免定期输入密码。 该文件应位于您的主目录中,并包含以下格式的行:

.pgpass的权限必须禁止任何其他用户或组的访问(例如:chmod 0600 ~/.pgpass)。 如果权限不严格于此权限,则文件将被忽略。 (但是,当前未在Microsoft Windows客户端上检查文件权限。)

指定连接参数的另一种方法是在conninfo字符串或URI中,而不是使用数据库名称。 这种机制使您可以非常广泛地控制连接。 例如:

这样,您还可以按照PostgreSQL文档中的LDAP查找连接参数中所述使用LDAP进行连接参数查找。 有关所有可用连接选项的更多信息,请参见PostgreSQL文档中的参数关键字

如果由于某种原因(权限不足,服务器未运行等)而无法建立连接,则psql将返回错误并终止。

如果标准输入或标准输出中至少有一个是终端,则psql会将客户端编码设置为auto, 它将从语言环境设置(Unix系统上的LC_CTYPE环境变量)中检测适当的客户端编码。 如果无法按预期进行,则可以使用环境变量PGCLIENTENCODING覆盖客户端编码。

输入SQL命令

在正常操作中,psql会提示您输入当前已连接psql的数据库的名称, 后跟字符串\=>(对于常规用户)或\=#(对于超级用户)。 例如:

在提示符下,用户可以键入SQL命令。 通常,当到达命令终止分号时,会将输入行发送到服务器。 行尾不会终止命令。 因此,为了清楚起见,命令可以分布在几行上。 如果命令已正确发送和执行,则命令的结果将显示在屏幕上。

如果不受信任的用户可以访问未采用安全模式使用模式的数据库, 请通过从search_path中删除可公开写入的模式来开始会话。 您可以在连接字符串中添加options=-csearch_path=或在其他SQL命令之前发出SELECT pg_catalog.set_config(‘search_path’, ‘’, false)。 此注意事项并非特定于psql;它适用于执行任意SQL命令的每个接口。

元命令

在psql中输入的任何以不带引号反斜杠开头的内容都是psql元命令,该命令由psql本身处理。 这些命令有助于使psql对管理或脚本化更加有用。 元命令通常被称为斜杠或反斜杠命令。

psql命令的格式为反斜杠,后跟命令动词,然后是参数。 参数与命令动词之间用任意数量的空格字符分隔。

要将空格包含在参数中,可以用单引号将其引起来。 要将单引号包含在这样的参数中,请在单引号文本中写两个单引号。 此外,单引号中包含的所有内容都会用类似C的方式替换\n(换行),\t(制表符),\b(退格键), \r(回车),\f(换页),\digits( 八进制)和\xdigits(十六进制)。 在单引号包围的文本中,反斜杠前导任何其他字符, 都表示是该单个字符,不管它是什么。

在一个参数中,加上反勾号(`)的文本被看做是一个命令行,传递给shell。 该命令的输出(删除结尾的新行)替换了加上反勾号的文本。

如果一个未加引号的冒号(:)后面跟着一个psql变量名, 出现在一个参数中,那么它会被变量的值取代,就像SQL代换中描述的那样。

有些命令以一个SQL标识的名称(比如一个表名)为参数。 这些参数遵循SQL语法关于双引号的规则:不带双引号的标识强制成小写,而双引号(“)保护字母不进行大小写转换,并且允许在标识符中使用空白。 在双引号中,成对的双引号在结果名字中分析成一个双引号。 比如,FOO”BAR”BAZ解析成fooBARbaz;而”A weird”” name”解析成A weird” name。

对参数的分析在行的末尾停止,或者在找到另一个不带引号的反斜杠时停止。 一个不带引号的反斜杠会认为是一个新的元命令的开始。 特殊的双反斜杠序列\标识参数的结尾并将继续分析后面的SQL命令(如果存在的话)。 这样SQL和psql命令可以自由的在一行里面混合。 但是在任何情况下,一条元命令的参数不能延续超过行尾。

下面是已定义的元命令:

\a

如果目前的表输出格式是不对齐的,则切换成对齐的。 如果是对齐的,则切换成不对齐。 这条命令是为了向后兼容。 参阅\pset获取一个更通用的解决方法。

\c | \connect [dbname [username] [host] [port]] | conninfo

与一个PostgreSQL服务器建立一个新的连接。 要使用的连接参数通过位置语法或者使用conninfo连接字符串(在libpq连接字符串描述)指定。

如果该命令省略了数据库名称,用户,主机或端口,则新连接可以重用先前连接中的值。 默认情况下,除了处理conninfo字符串时,都将重用先前连接的值。 传递-reuse-previous=on或-reuse-previous=off的第一个参数将覆盖该默认值。 当命令既未指定也不重用特定参数时,将使用libpq缺省值。 将dbname,username,host或port中的任何一个指定为-等同于省略该参数。

如果成功制作了新连接,那么关闭以前的连接。 如果连接失败,那么仅当psql处于交互模式时将保留前面的连接。 如果运行的是非交互的脚本,处理会马上停止并返回一个错误。 设置这样的区别一方面是为用户使用方便考虑,另一方面也为了保证脚本不会碰巧操作了错误的数据库的安全机制考虑。

示例:

\C [title]

把正在打印的表的标题设置为一个查询的结果或者取消这样的设置。 这条命令等效于\pset title。

\cd [directory]

把当前工作目录改变到directory。 没有参数则是改变到当前用户的家目录。 使用!pwd打印出当前工作目录。

\conninfo

显示有关当前连接的信息,包括数据库名称,用户名,连接类型(UNIX域套接字,TCP/IP等),主机和端口。

\copy {table [(column_list)] | (query)} {from | to} {‘filename’ | program ‘command’ | stdin | stdout | pstdin | pstdout} [with] (option [, …]) ]

执行前端(客户端)拷贝。 这是一个运行SQL COPY命令的操作, 不同的是服务器在读写指明的文件,而psql读写文件并作为本地的文件系统和服务器之间的跳板取出或写入数据。 这意味着文件访问性和权限都是本地用户的,而不是服务器的,因此不需要SQL超级用户权限。

当指定了program时,command是通过psql执行的, 并且来自或到达command的数据在服务器和客户端之间传送。 再次,文件访问性和权限都是本地用户的,而不是服务器的,因此不需要SQL超级用户权限。

\copy … from stdin | to stdout分别基于命令输入和输出进行读/写。 从发出命令的同一源读取所有行,直到.为止或流到达EOF。 输出被发送到与命令输出相同的位置。 要从psql的标准输入或输出读取/写入,请使用pstdin或pstdout。 此选项对于在SQL脚本文件中内联填充表很有用。

该命令的语法与SQL COPY命令的语法相似,并且option必须指示SQL COPY命令的选项之一。 请注意,因此,特殊的解析规则适用于\copy命令。 特别是,变量替换规则和反斜杠转义不适用。

此操作不如SQL COPY命令有效,因为所有数据都必须通过客户端/服务器连接传递。

\copyright

显示Greenplum数据库所基于的PostgreSQL的版权和发行条款。

\d [relation_pattern] | \d+ [relation_pattern] | \dS [relation_pattern]

对于每个匹配pattern的关系 (表、视图、索引、序列或外部表)或复合类型, 显示所有列、它们的类型、表空间(如果不是缺省的)和任何特殊属性(诸如NOT NULL或缺省等)。 相关的索引、约束、规则、触发器也同样显示出来。 对于外部表,也显示相关的外部服务器。

  • 对于一些关系类型,\d为每个字段显示了额外的信息: 序列的字段值,索引的索引表达式和外部表的外部数据封装器选项。

  • 命令形式\d+相同,除了显示更多信息:显示与表的列关联的所有注释,以及表中是否存在OID,如果关系是视图,则为视图定义。

    对于分区表,用根分区表或子分区表指定的命令\d或\d+显示有关该表的信息,包括分区表当前级别上的分区键。 命令\d+还显示表的直接子分区以及该子分区是外部表还是常规表。

    对于追加优化的表和面向列的表,\d+显示表的存储选项。 对于追加优化的表,将显示该表的选项。 对于面向列的表,将为每列显示存储选项。

  • 缺省的,只显示用户创建的对象;应用一个模式或S修饰符包含系统对象。

    Note: 如果不带任何pattern参数调用\d,那么等效于\dtvsE, 将显示一个所有可见表,视图,序列和外部表的列表。

\da[S] [aggregate_pattern]

列出聚合函数,以及它们的返回类型和操作的数据类型。 如果声明了pattern,那么只显示匹配模式的聚合函数。 缺省的,只显示用户创建的对象;应用一个模式或S修饰符包含系统对象。

\db[+] [tablespace_pattern]

列出所有可用的表空间及其对应的路径。 如果指定了模式,则仅显示名称与模式匹配的表空间。 如果在命令名称后附加+,则会列出每个对象及其关联的权限。

\dc[S+] [conversion_pattern]

列出字符集编码之间的转换。 如果指定了模式,则仅列出名称与该模式匹配的转换。 默认情况下,仅显示用户创建的对象。 提供一个模式或S修饰符以包含系统对象。 如果在命令名称后附加+,则会列出每个对象及其相关描述。

\dC[+] [pattern]

列出类型转换。 如果指定了模式,则仅列出其源或目标类型与该模式匹配的转换。 如果在命令名称后附加+,则会列出每个对象及其相关描述。

\dd[S] [pattern]

显示类型constraint,operator class,operator family,rule和trigger的对象的描述。 所有其他注释都可以通过相应的反斜杠命令查看那些对象类型。

\dd显示与模式匹配的对象的描述,或者如果没有给出参数,则显示适当类型的可见对象的描述。 但无论哪种情况,仅列出具有描述的对象。 默认情况下,仅显示用户创建的对象。 提供一个模式或S修饰符以包含系统对象。

可以使用COMMENT SQL命令创建对象的描述。

\ddp [pattern]

列出默认的访问权限设置。 将为每个角色(和模式,如果适用)显示一个条目,其默认权限设置已从内置默认值更改。 如果指定了pattern,则仅列出角色名称或模式名称与模式匹配的条目。

ALTER DEFAULT PRIVILEGES命令用于设置默认访问权限。 特权显示的含义在GRANT下进行了说明。

\dD[S+] [domain_pattern]

列出域。如果指定了模式,则仅显示名称与该模式匹配的域。 默认情况下,仅显示用户创建的对象。 提供一个模式或S修饰符以包含系统对象。 如果在命令名称后附加+,则会列出每个对象及其关联的权限和描述。

\dEistPv[S+] [external_table | index | sequence | table | parent table | view]

这不是实际的命令名称:字母E,i,s,t,P和v分别代表外部表, 索引,序列,表,父表和视图。 您可以按任何顺序指定任何或所有这些字母,以获得这些类型的对象的列表。 例如,\dit列出索引和表。 如果在命令名称后附加+,则会列出每个对象及其在磁盘上的物理大小及其相关的描述(如果有)。 如果指定了模式,则仅列出名称与该模式匹配的对象。 默认情况下,仅显示用户创建的对象。 提供一个模式或S修饰符以包含系统对象。

\des[+] [foreign_server_pattern]

列出外部服务器。 如果指定了模式,则仅列出名称与该模式匹配的服务器。 如果使用\des+形式,则会显示每个服务器的完整描述,包括服务器的ACL,类型,版本,选项和描述。

\det[+] [foreign_table_pattern]

列出所有外部表。 如果指定了模式,则仅列出其表名或模式名称与该模式匹配的条目。 如果使用\det+形式,则还将显示通用选项和外部表描述。

\deu[+] [user_mapping_pattern]

列出用户映射。 如果指定了模式,则仅列出其用户名与模式匹配的那些映射。 如果使用\deu+形式,则会显示有关每个映射的其他信息。

Warning: \deu+可能也显示远程用户的用户名和密码,所以要小心不要透漏它们。

\dew[+] [foreign_data_wrapper_pattern]

列出外部数据包装器。 如果指定了模式,则仅列出名称与该模式匹配的数据包装器。 如果使用\dew+形式,则还将显示ACL,选项和外部数据包装程序的描述。

\df[antwS+] [function_pattern]

列出函数以及它们的参数,返回类型和函数类型,这些函数分为“agg”(聚合),“normal”,“trigger”或“window”。 要仅显示特定类型的函数,请在命令中添加相应的字母a,n,t或w。 如果指定了模式,则仅显示名称与该模式匹配的函数。 如果使用\df+形式,则会显示有关每个函数的其他信息,包括安全性,易变性,语言,源代码和描述。 默认情况下,仅显示用户创建的对象。 提供一个模式或S修饰符以包含系统对象。

\dF[+] [pattern]

列出文本搜索配置。 如果指定了模式,则仅显示名称与该模式匹配的配置。 如果使用\dF+形式,则会显示每个配置的完整描述,包括基础文本搜索解析器和每种解析器令牌类型的字典列表。

\dFd[+] [pattern]

列出文本搜索词典。 如果指定了模式,则仅显示名称与该模式匹配的词典。 如果使用\dFd+形式,则会显示有关每个所选词典的其他信息,包括基础的文本搜索模板和选项值。

\dFp[+] [pattern]

列出文本搜索解析器。 如果指定了模式,则仅显示名称与模式匹配的解析器。 如果使用\dFp+形式,则会显示每个解析器的完整说明,包括基础函数和已识别令牌类型的列表。

\dFt[+] [pattern]

列出文本搜索模板。 如果指定了模式,则仅显示名称与该模式匹配的模板。 如果使用\dFt+形式,则会显示有关每个模板的其他信息,包括基础函数名称。

\dg[+] [role_pattern]

列出数据库角色。 (由于将“用户”和“组”的概念统一为“角色”,因此该命令现在等效于\du。) 如果指定了模式,则仅列出名称与模式匹配的角色。 如果使用\dg+形式,则将显示有关每个角色的其他信息;否则,将显示其他信息。 目前,这会为每个角色添加注释。

\dl

这是\lo_list的别名,其中显示了大对象列表。

Note: Greenplum数据库不支持PostgreSQL 大对象工具来流存储在大对象结构中的用户数据。

\dL[S+] [pattern]

列出过程语言。 如果指定了模式,则仅列出名称与该模式匹配的语言。 默认情况下,仅显示用户创建的语言。 提供S修饰符以包括系统对象。 如果在命令名称后附加+,则将列出每种语言及其调用处理程序,验证程序,访问特权以及是否为系统对象。

\dn[S+] [schema_pattern]

列出所有可用的模式(名称空间)。 如果指定了模式,则仅列出名称与模式匹配的模式。 默认情况下,仅显示用户创建的对象。 提供一个模式或S修饰符以包含系统对象。 如果在命令名后附加+,则列出每个对象及其相关的权限和描述(如果有)。

\do[S] [operator_pattern]

列出可用的运算符及其操作数和返回类型。 如果指定了模式,则仅列出名称与模式匹配的运算符。 默认情况下,仅显示用户创建的对象。 提供一个模式或S修饰符以包含系统对象。

\dO[S+] [pattern]

列出排序规则。 如果指定了模式,则仅列出名称与模式匹配的排序规则。 默认情况下,仅显示用户创建的对象。 提供一个模式或S修饰符以包含系统对象。 如果在命令名称后附加+,则将列出每个排序规则及其关联的描述(如果有)。 请注意,仅显示可与当前数据库的编码一起使用的排序规则,因此在同一安装的不同数据库中,结果可能会有所不同。

\dp [relation_pattern_to_show_privileges]

列出具有相关访问权限的表,视图和序列。 如果指定了模式,则仅列出名称与该模式匹配的表,视图和序列。 GRANTREVOKE命令用于设置访问权限。 特权显示的含义在GRANT下进行了说明。

\drds [role-pattern [database-pattern]]

列出定义的配置设置。 这些设置可以是角色特定的,数据库特定的或两者。 role-pattern和database-pattern分别用于选择特定角色和要列出的数据库。 如果省略,或者指定*,则列出所有设置,包括分别不是角色特定的或数据库特定的设置。

ALTER ROLEALTER DATABASE命令用于定义每个角色和每个数据库的角色配置设置。

\dT[S+] [datatype_pattern]

列出数据类型。 如果指定了模式,则仅列出名称与模式匹配的类型。 如果在命令名称后附加+,则将列出每种类型及其内部名称和大小,如果是枚举类型则允许的值及其关联的权限。 默认情况下,仅显示用户创建的对象。 提供一个模式或S修饰符以包含系统对象。

\du[+] [role_pattern]

列出数据库角色。 (由于将“用户”和“组”的概念统一为“角色”,因此此命令现在等效于\dg。) 如果指定了模式,则仅列出名称与模式匹配的角色。 如果使用\du+形式,则会显示有关每个角色的其他信息; 目前,这会为每个角色添加注释。

\dx[+] [extension_pattern]

列出已安装的扩展。 如果指定了模式,则仅列出名称与该模式匹配的扩展名。 如果使用\dx+形式,则列出属于每个匹配扩展的所有对象。

\dy[+] [pattern]

列出事件触发器。 如果指定了模式,则仅列出其名称与该模式匹配的触发器。 如果在命令名称后附加+,则会列出每个对象及其相关描述。

Note: Greenplum数据库不支持用户定义的触发器。

\e | \edit [filename] [line_number]

如果指定filename,则文件被编辑;编辑器退出后,其内容将复制回查询缓冲区。 如果未提供filename,则将当前查询缓冲区复制到一个临时文件,然后以相同的方式对其进行编辑。

然后根据psql的常规规则重新解析新的查询缓冲区,其中整个缓冲区被视为一行。 (因此,您不能以这种方式制作脚本。为此请使用\i。) 这也意味着,如果查询以分号结尾(或包含分号),则会立即执行该查询。 在其他情况下,它将仅在查询缓冲区中等待;输入分号或\g发送,或\r取消。

如果指定了行号,则psql将光标定位在文件或查询缓冲区的指定行上。 请注意,如果给出单个全数字参数,则psql假定它是行号,而不是文件名。

有关配置和自定义编辑器的信息,请参见环境变量

\echo text [ … ]

将参数输出到标准输出,中间用一个空格分隔,后跟换行符。 这对于在脚本输出中散布信息很有用。 如果第一个参数是未加引号的-n,则不写结尾的换行符。

Note: 如果使用\o命令重定向查询输出,则可能希望使用\qecho代替此命令。

\ef [function_description [line_number]]

该命令以CREATE OR REPLACE FUNCTION命令的形式获取并编辑命名函数的定义。 编辑的方式与\edit相同。 编辑器退出后,更新的命令在查询缓冲区中等待;输入分号或\g发送,或\r取消。

目标函数可以仅通过名称指定,也可以通过名称和参数指定,例如foo(integer, text)。 如果有多个具有相同名称的函数,则必须给出参数类型。

如果未指定任何函数,则会显示空白的CREATE FUNCTION模板以供编辑。

如果指定了行号,则psql将光标定位在函数主体的指定行上。 (请注意,函数主体通常不在文件的第一行开始。)

有关配置和自定义编辑器的信息,请参见环境变量

\encoding [encoding]

设置客户端字符集编码。如果不带参数,此命令将显示当前编码。

\f [field_separator_string]

为未对齐的查询输出设置字段分隔符。 默认值为竖线(|)。 另请参阅\pset以获取设置输出选项的通用方法。

\g [filename]

\g [ | command ]

将当前查询输入缓冲区发送到服务器,并有选择地将查询的输出存储到filename中,或将输出通过管道传递给shell命令command。 仅当查询成功返回零个或多个元组时,才写入文件或命令,如果查询失败或是不返回数据的SQL命令,则不写入文件或命令。

裸\g本质上等效于分号。 带参数的\g是\o命令的一次性替代方案。

\gset [prefix]

将当前查询输入缓冲区发送到服务器,并将查询的输出存储到psql变量中。 要执行的查询必须恰好返回一行。 该行的每一列都存储在一个单独的变量中,该变量与该列相同。 例如:

如果指定prefix,则在查询的列名称之前添加该字符串以创建要使用的变量名称:

如果列结果为NULL,那么对应的变量是未设置的。

如果查询失败或不返回一行,则不会更改任何变量。

\h | \help [sql_command]

提供有关指定SQL命令的语法帮助。 如果未指定命令,则psql将列出所有可使用语法帮助的命令。 如果command是星号(*),则会显示所有SQL命令的语法帮助。 为了简化键入,不必引用由几个单词组成的命令。

\H | \html

打开HTML查询输出格式。 如果HTML格式已打开,则将其切换回默认的对齐文本格式。 此命令是为了兼容性和方便起见,但有关设置其他输出选项的信息,请参见\pset。

\i | \include filename

从文件filename中读取输入,并像在键盘上键入文件一样执行它。

如果filename是-(连字符),则将读取标准输入,直到EOF指示或\q元命令为止。 这可用于将交互式输入与文件输入进行穿插。 请注意,只有在最外层处于活动状态时,才会使用Readline行为。

如果要在阅读时看到屏幕上的行,必须将变量ECHO设置为all。

\ir | \include_relative filename

\ir命令类似于\i,但是以不同的方式解析相对文件名。 在交互模式下执行时,两个命令的行为相同。 但是,从脚本调用时,\ir会相对于脚本所在目录而不是当前工作目录来解释文件名。

\l[+] | \list[+] [pattern]

列出服务器中的数据库,并显示其名称,所有者,字符集编码和访问特权。 如果指定了模式,则仅列出名称与该模式匹配的数据库。 如果在命令名称后附加+,则还会显示数据库大小,默认表空间和描述。 (大小信息仅适用于当前用户可以连接到的数据库。)

\lo_export loid filename

从数据库读取OID loid的大对象,并将其写入filename。 请注意,这与服务器函数lo_export稍有不同,后者以数据库服务器运行的用户权限和服务器文件系统上的用户权限运行。 使用\lo_list找出大对象的OID。

Note: Greenplum数据库不支持PostgreSQL大对象工具来流存储在大对象结构中的用户数据。

\lo_import large_object_filename [comment]

将文件存储到大对象中。 (可选)它将给定的注释与对象相关联。例:

该响应表明大对象接收到对象ID 152801,如果要再次访问该对象,应该记住该对象。 因此,建议始终将可读的注释与每个对象相关联。 然后可以使用\lo_list命令查看这些内容。 请注意,此命令与服务器端lo_import略有不同,因为它充当本地文件系统上的本地用户,而不是服务器的用户和文件系统。

Note: Greenplum数据库不支持PostgreSQL大对象工具来流存储在大对象结构中的用户数据。

\lo_list

显示当前存储在数据库中的所有大型对象的列表,以及为其提供的任何注释。

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
AiDBA后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
验证码:
获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复