#恢复时指定的
数据库是newdb,导入哪些
数据库对象和导入顺序将会按照new_db.list文件中提示的规则导入。
/> pg_restore -d newdb -L new_db.list my_dump.dat
九、psql:
PostgreSQL的交互终端,等同于
Oracle中的sqlplus。
1. 常用命令行选项列表:
选项
说明
-c command
指定psql执行一条SQL命令command(用双引号括起),执行后退出。
-d dbname
待连接的数据库名称。
-E
回显由\d和其他反斜杠命令生成的实际查询。
-f filename
使用filename文件中的数据作为命令输入源,而不是交互式读入查询。在处理完文件后,psql结束并退出。
-h hostname
声明正在运行服务器的主机名
-l
列出所有可用的数据库,然后退出。
-L filename
除了正常的输出源之外,把所有查询记录输出到文件filename。
-o filename
将所有查询重定向输出到文件filename。
-p port
指定PostgreSQL服务器的监听端口。
-q --quiet
让psql安静地执行所处理的任务。缺省时psql将输出打印欢迎和许多其他信息。
-t --tuples-only
关闭打印列名称和结果行计数脚注等信息。
-U username
以用户username代替缺省用户与数据库建立连接。
2. 命令行选项应用示例:
#-d: 指定连接的数据库。
#-U: 指定连接的用户。
#-c: 后面的SQL语句是本次操作需要执行的命令。
/> psql -d posgres -U postgres -c "select * from testtable"
i
--- www.2cto.com
1
2
3
5
(4 rows)
#-t: 没有输出上面输出结果中的字段标题信息和行数统计信息。
#-q:该选项和-t选项联合使用,非常有利于自动化脚本。如:
# select 'copy ' || tablename || ' to ' || tablename || '.sql' from pg_tables
#由以上sql语句生成的结果集,在重定向到输出文件后,可以作为下一次psql的输入执行。
/> psql -t -q -c "select * from testtable"
1
2
3
5
/> psql -l
List of databases
Name | Owner | Encoding | Collation | Ctype | Access privileges
------------+----------+----------+-------------+-------------+-----------------------
mydatabase | myuser | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |
postgres | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |
... ...
(4 rows)
#-o: 将查询语句的数据结果输出到指定文件。
/> psql -c "select * from testtable" -o out
/> cat out
i
---
1
2
3
5
(4 rows)
3. 内置命令列表:
psql内置命令的格式为反斜杠后面紧跟一个命令动词,之后是任意参数。参数与命令动词以及其他参数之间可以用空白符隔开,如果参数里面包含空白符,该参数必须用单引号括起,如果参数内包含单引号,则需要用反斜杠进行转义,此外单引号内的参数还支持类似
C语言printf函数所支持的转义关键字,如\t、\n等。
命令
说明
\a
如果目前的表输出格式是不对齐的,切换成对齐的。如果是对齐的,则切换成不对齐。
\cd [directory]
把当前工作目录切换到directory。没有参数则切换到当前用户的主目录。
\C [title]
为查询结果添加表头(title),如果没有参数则取消当前的表头。
\c [dbname [ username] ]
连接新的数据库,同时断开当前连接。如果dbname参数为-,表示仍然连接当前数据库。如果忽略username,则表示继续使用当前的用户名。
\copy
其参数类似于SQL copy,功能则几乎等同于SQL copy,一个重要的差别是该内置命令可以将表的内容导出到本地,或者是从本地导入到数据库指定的表,而SQL copy则是将表中的数据导出到服务器的某个文件,或者是从服务器的文件导入到数据表。由此可见,SQL copy的效率要优于该内置命令。
\d [pattern]
显示和pattern匹配的数据库对象,如表、视图、索引或者序列。显示所有列,它们的类型,表空间(如果不是缺省的)和任何特殊属性。
\db [pattern]
列出所有可用的表空间。如果声明了pattern, 那么只显示那些匹配模式的表空间。
\db+ [pattern]
和上一个命令相比,还会新增显示每个表空间的权限信息。
\df [pattern]
列出所有可用函数,以及它们的参数和返回的数据类型。如果声明了pattern,那么只显示匹配(正则表达式)的函数。
\df+ [pattern]
和上一个命令相比,还会新增显示每个函数的附加信息,包括语言和描述。 www.2cto.com
\distvS [pattern]
这不是一个单独命令名称:字母 i、s、t、v、S 分别代表索引(index)、序列(sequence)、表(table)、视图(view)和系统表(system table)。你可以以任意顺序声明部分或者所有这些字母获得这些对象的一个列表。
\dn [pattern]
列出所有可用模式。如果声明了pattern,那么只列出匹配模式的模式名。
\dn+ [pattern]
和上一个命令相比,还会新增显示每个对象的权限和注释。
\dp [pattern]
生成一列可用的表和它们相关的权限。如果声明了pattern, 那么只列出名字可以匹配模式的表。
\dT [pattern]
列出所有数据类型或只显示那些匹配pattern的。
\du [pattern]
列出所有已配置用户或者只列出那些匹配pattern的用户。
\echo text [ ... ]
向标准输出打印参数,用一个空格分隔并且最后跟着一个新行。如:\echo `date`
\g [{filename | |command}]
把当前的查询结果缓冲区的内容发送给服务器并且把查询的输出存储到可