psql -h 127.0.0.1 -p 5432 -U 用户名 -d 数据库名 或 sudo -u postgres psql
select * from pg_tables;
3.1\d命令后面的表名或索引名可以使用通配符,如“”或“?”,使用\d x?命令可以匹配数据库名以x开头的数据库
3.2使用\d t* 命令可以匹配包含数据库名为t的数据库
3.3 \d+命令可以显示更详细的信息
3.4\di命令只显示索引
postgres=# \d tb_test; 数据表 "public.tb_test" 栏位 | 类型 | Collation | Nullable | Default ------+----------------+-----------+----------+--------- id | integer | | | name | character(100) | | |
select * from machine.activity_monitor_configuration; select * from machine.usg_calibration data;
7.1如果需要输出的不带任何边框,使用命令\pset border 0
7.2如果需要使用逗号分隔或以Tab分隔,使用\pset format unaligned命令
7.3默认分隔符是“|”,可以使用\pset fieldsep命令来设置分隔符,如更改为Tab分隔符:\pset fieldsep '\t'
\o /data/wb_drive/LOG_STORAGE/output1.txt \pset border 0 \pset format unaligned \pset fieldsep '\t' select * from pg_tables;
也可以直接在psql命令行使用-f <文件名>来执行SQL脚本,此处的-x命令的作用相当于在psql中交互模式下运行\x命令
\x \i xxx.sql psql -x -f xxx.sql
一、建立连接
psql -h hostname -p port -U username -d dbname
-d dbname --dbname=dbname 指定要连接的数据库的名称 -h hostname --host=hostname 指定运行服务器的机器的主机名 -p port --port=port 指定服务器用于监听连接的 TCP 端口或者本地 Unix 域套接字文件扩展,如果没有设置,则默认为编译时指定的端口号(通常是5432) -U username --username=username 指定连接的用户名
将上述参数替换成自己的连接参数后,按回车键会提示输入口令, 此时输入密码后按回车键就可以建立连接了。
二、操作数据库
psql命令的格式是用反斜线后面直接跟上一个命令动词,然后是一些参数。参数与命令动词和其他参数之间用任意多个空白字符分隔开。
1、打印当前工作目录: \! pwd 2、列出数据库信息:\l[+] [ pattern ] 列出服务器中的数据库并且显示它们的名称、拥有者、字符集编码以及访问特权。如果指定了pattern,则只列出名称匹配该模式的数据库。如果向命令名称追加+,则还会显示数据库的尺寸、默认表空间以及描述(尺寸信息只对当前用户能连接的数据库可用)。 3、切换数据库: \c dbname 4、列出 schema:\dn[S+] [ pattern ] 如果指定了pattern,只列出名称匹配该模式的模式。默认情况下只会显示用户创建的对象,提供一个模式或者S修饰符可以把系统对象包括在内。如果向命令名称追加+,每个对象会与它相关的权限及描述(如果有)一起被列出。 5、 \dE[S+] [ pattern ] \di[S+] [ pattern ] \dm[S+] [ pattern ] \ds[S+] [ pattern ] \dt[S+] [ pattern ] \dv[S+] [ pattern ] 在这一组命令中,字母E、i、m、s、t和v分别对应着外部表、索引、物化视图、序列、表和视图。你可以以任何顺序指定这些字母中的任意一个或者多个,这样可以得到这些类型的对象的列表。例如,\dit会列出索引和表。如果在命令名称后面追加+,则每一个对象的物理尺寸以及相关的描述也会被列出。如果指定了pattern,只列出名称匹配该模式的对象。默认情况下只会显示用户创建的对象,提供一个模式或者S修饰符可以把系统对象包括在内。 6、列出 schema下的表:\dt schema_name.* 包含一个点号(.)的模式被解释为一个 schema 名称模式后面跟上一个对象名称模式。例如,\dt foo*.*bar*会显示名称以foo开始的 schema 中所有名称包括bar的表。如果没有出现点号,那么模式将只匹配当前 schema 搜索路径中可见的对象。同样,双引号内的点号会失去其特殊含义并且变成普通的字符。 7、\! [ command ] 如果没有参数,就跳出到一个子shell,当子shell退出时psql会继续。如果有一个参数,则执行shell命令command。 与大部分其他元命令不同,该行的所有剩余部分总是会被当做\!的参数,并且在参数中不会执行变量篡改以及反引号展开。该行的剩余部分会被简单地按字面传递给shell。 8、\q or \quit 退出psql程序。在一个脚本文件中,只有该脚本的执行会被终止。
1、copy命令导入导出数据为sql格式,可以只选部分列
postgresql=# COPY tb2persons(first_name,last_name,email) TO '/mnt/postgresql/weibo.sql';
copy (select * from tablename limit 100) to '/data/wb_drive/LOG_STORAGE/exportdb/tablename.csv' DELIMITER ',' CSV HEADER;
postgresql没有自带的批量导入导出成CSV的指令,但是有一个调用执行文件的指令(\i),这个指令可以执行编写的脚本。例如
一个a.txt文件,里面内容是
#将xxx表数据导出xxx文件
\copy xxx to xxx
需要在客户端的指令界面执行以下指令
\i 路径\a.txt
就可以进行批量导出操作。
上一篇:Mysql之主从复制