psql是PostgreSQL自身提供的一款查询工具,除了作为交互查询工具使用之外,psql还是一款理想的脚本工具。
 

 名称: 
PostgreSQL交互式终端。 


 语法: 


     psql [OPTION] ...  [DBNAME [USERNAME]] 


 常规选项: 


     -c,--command=COMMAND:运行单个SQL命令后退出 


     
 -d,--dbname=DBNAME:指定使用的数据库名
 

     -f,--file=FILENAME:指定执行的SQL文件然后退出 


     -l,--list:列出所有可用的数据库,然后退出 

      

     -v,--set=,--variable=NAME=VALUE:设置变量 


     -X,--no-psqlrc:不读取启动文件(~/.psqlrc) 


     -1(数字1),--single-transaction:以单个事务执行SQL命令 


     --help:显示帮助并退出 


    --version:输出版本信息并退出
    -s 选项把你置于单步模式,它在向服务器发送每个语句之前暂停。
 

 输入和输出选项: 


     -a,--echo-all:显示所有脚本中输入的SQL命令 


     -L,--log-file=FILENAME:指定日志文件 


     -n,--no-readline:不允许编辑命令 


     

 输出格式化选项: 


     -A,--no-align:输出不对齐 


     -F,--field-separator=String:指定字段分隔符(默认为|) 


     -H,--html:以HTML表格输出 


 连接选项: 


     -h,--host=HOSTNAME:指定服务器名或SOCKET目录 

         

     -p,--port=PORT:指定端口号(默认为5432) 


    -U,--username=Username:指定用户名(默认为postgresql) 


     -w,--no-password:从不提示输入密码 


     -W,--password:强制提示密码 


 实例: 


     #列出所有可用的数据库列表
     psql -l -U root

     #以root用户登陆并提示输入密码,会登陆默认的数据库(数据库列表中的第一个?A?)
 
    psql -U root -W test
    #登陆一个数据库之后列出所有数据库
    \l
登陆一个数据库之后列出所有表
    \d
                      List of relations
  Schema  |             Name              |   Type   |  Owner
----------+-------------------------------+----------+----------
 anzi| vx_ruleset                    | table    | anzi
    #列出所有表的详细信息
    如\d *
          Table "anzi.vx_ruleset" --------- 其中anzi是用户名
  Column  |           Type           | Modifiers
----------+--------------------------+-----------
 name     | character varying(256)   | not null
 tstamp   | integer                  | not null
 ruleset  | character varying(65536) | not null
 app_data | character varying(10240) |
Indexes:
    "idx_vx_ruleset" UNIQUE, btree (name)
    #连接另外一个数据库
    \c 数据库名
    #退出连接
    \q
    #显示客户端字符集
    \encoding
            SQL_ASCII
    #设置客户端字符集
    如\encoding'EUC_JP' 
    #\set 查询内部变量
AUTOCOMMIT = 'on'
 PROMPT1 = '%/%R%# '
 PROMPT2 = '%/%R%# '
 PROMPT3 = '>> '给出声明的SQL 命令的语法帮助
    1) \h 
 Available help:
   ABORT                            COPY                             DROP AGGREGATE                   LISTEN
   ALTER AGGREGATE                  CREATE AGGREGATE                 DROP CAST                        LOAD
   ALTER CONVERSION                 CREATE CAST                      DROP CONVERSION                  LOCK
   ALTER DATABASE                   CREATE CONSTRAINT TRIGGER        DROP DATABASE                    MOVE
   ALTER DOMAIN                     CREATE CONVERSION                DROP DOMAIN                      NOTIFY
   ALTER FUNCTION                   CREATE DATABASE                  DROP FUNCTION                    PREPARE
   ALTER GROUP                      CREATE DOMAIN                    DROP GROUP                       PREPARE TRANSACTION
   ALTER INDEX                      CREATE FUNCTION                  DROP INDEX                       REASSIGN OWNED
   ALTER LANGUAGE                   CREATE GROUP                     DROP LANGUAGE                    REINDEX
   ALTER OPERATOR CLASS             CREATE INDEX                     DROP OPERATOR CLASS              RELEASE SAVEPOINT
   ALTER OPERATOR                   CREATE LANGUAGE                  DROP OPERATOR                    RESET
   ALTER OPERATOR FAMILY            CREATE OPERATOR CLASS            DROP OPERATOR FAMILY             REVOKE
   ALTER ROLE                       CREATE OPERATOR                  DROP OWNED                       ROLLBACK
   ALTER SCHEMA                     CREATE OPERATOR FAMILY           DROP ROLE                        ROLLBACK PREPARED
   ALTER SEQUENCE                   CREATE ROLE                      DROP RULE                        ROLLBACK TO SAVEPOINT
   ALTER TABLE                      CREATE RULE                      DROP SCHEMA                      SAVEPOINT
   ALTER TABLESPACE                 CREATE SCHEMA                    DROP SEQUENCE                    SELECT
   ALTER TRIGGER                    CREATE SEQUENCE                  DROP TABLE                       SELECT INTO
   ALTER TEXT SEARCH CONFIGURATION  CREATE TABLE                     DROP TABLESPACE                  SET
   ALTER TEXT SEARCH DICTIONARY     CREATE TABLE AS                  DROP TRIGGER                     SET CONSTRAINTS
   ALTER TEXT SEARCH PARSER         CREATE TABLESPACE                DROP TEXT SEARCH CONFIGURATION   SET ROLE
   ALTER TEXT SEARCH TEMPLATE       CREATE TRIGGER                   DROP TEXT SEARCH DICTIONARY      SET SESSION AUTHORIZATION
   ALTER TYPE                       CREATE TEXT SEARCH CONFIGURATION DROP TEXT SEARCH PARSER          SET TRANSACTION
   ALTER USER                       CREATE TEXT SEARCH DICTIONARY    DROP TEXT SEARCH TEMPLATE        SHOW
   ALTER VIEW                       CREATE TEXT SEARCH PARSER        DROP TYPE                        START TRANSACTION
   ANALYZE                          CREATE TEXT SEARCH TEMPLATE      DROP USER                        TRUNCATE
   BEGIN                            CREATE TYPE                      DROP VIEW                        UNLISTEN
   CHECKPOINT                       CREATE USER                      END                              UPDATE
   CLOSE                            CREATE VIEW                      EXECUTE                          VACUUM
   CLUSTER                          DEALLOCATE                       EXPLAIN                          VALUES
   COMMENT                          DECLARE                          FETCH
   COMMIT                           DELETE                           GRANT
   COMMIT PREPARED                  DISCARD                          INSERT   2) \h *  列出所有命令的语法
COMMIT    查询commit命令的语法
• 你可以在 SQL 命令中自由使用空白(也就是空格,tab,和换行符)。 这就意味着你可以用和上面不同的对齐方式键入命令。 
• 两个划线("--") 引入注释。 任何跟在它后面的东西直到该行的结尾都被忽略。 或者C风格的注释,支持嵌套注释。
• SQL 是对关键字和标识符大小写不敏感的语言,只有在标识符用双引号包围时才能保留它们的大小写属性。
• 不是简单数字值的常量必需用单引号(')包围。
• 一条命令是由一系列记号构成, 用一个分号(";")结尾。
• SQL 标准不会定义包含数字或者以下划线开头或结尾的关键字。
• 标识符:第一个字符为字母或下划线,后面接字母,数字或下划线。
标识符和关键字名字都是大小写无关的。
一种好习惯是把关键字写成大写,而名字等用小写。• 分隔标识符:也叫引号包围的标识符。 
  
• 引号包围的标识符可以包含除引号本身以外的任何其它字符。
• 要包含一个双引号,我们可以写两个双引号。
• 大小写相关
• PostgreSQL 里对未加引号的名子总是转换成小写, 这和 SQL 是不兼容的,SQL 里要求未用引号包围起来的名字总是转成大写。 因此 foo 等于 "FOO"。 如果你想写可移植的程序,那么我们建议你要么就总是引号包围的某个名字,要么就坚决不引。
• 字符串常量:
• 用单引号(')包围的任意字符序列。
• 可以使用 C-风格的反斜杠逃。但和标准不一致,将来将不支持。
• 标准:敲入两个连续的单引号来表示一个单引号;
• 标准:逃逸字串语法是通过在字串前写字母 E (大写或者小写)的方法声明的。 比如,E'\041';
• 两个只是通过至少有一个换行符的空白分隔的字符串常量会被连接在一起,并当做它们是写成一个常量处理。//如果不是通过换行符分割,而是通过空格分割,则语法错误。
• 美元符包围字串常量
• 不是 SQL 标准
• 标签是大小写相关的
• 位串常量:
• 只有二进制和16进制表示法;比如 B'1001'或X'1FF'。
• 支持跨行连续。
• 数值常量: 
  
• REAL '1.23' -- 字串风格
• '1.23'::REAL -- PostgreSQL (历史原因)风格
• 其他类型常量: 
  
• type 'string'
• 'string'::type
• CAST ( 'string' AS type )
• CAST ( expression AS type )
• expression::type
• typename ( 'string' )
• 操作符优先级:
Table 4-1. 操作符优先级(递减)
 
 
操作符/元素 关联性 描述
 
 
. 左 表/字段名分隔符
 
 
:: 左 PostgreSQL-特有的类型转换操作符
 
 
[ ] 左 数组元素选则
 
 
- 右 单目负号
 
 
^ 左 幂操作
 
 
* / % 左 乘,除,模
 
 
+ - 左 加,减
 
 
IS IS TRUE, IS FALSE, IS UNKNOWN, IS NULL
 
 
ISNULL 测试是否为空值
 
 
NOTNULL 测试是否为非空值
 
 
(任何其它的) 左 所有其它的本地和用户定义操作符
 
 
IN 集合成员
 
 
BETWEEN 范围包含
 
 
OVERLAPS 时间间隔重叠
 
 
LIKE ILIKE SIMILAR 字符串模式匹配
 
 
< > 小于,大于
 
 
= 右 等于,赋值
 
 
NOT 右 逻辑反
 
 
AND 左 逻辑与
 
 
OR 左 逻辑或
• 
• AS子句: 如何给输出字段重新命名的;
• DISTINCT: 消除重复的行;
• ORDER BY: 排序;
• WHERE子句: 在分组和聚集计算之前选取输入行(因此,它控制哪些行进入聚集计算);
• HAVING子句: 在分组和聚集之后选取分组的行。
• 
• 连接(join)查询:
• 同时访问同一个或者不同表的多个行的查询;
• 在连接查询里使用字段全称是很好的风格;
• INNER JOIN
• LEFT OUTER JOIN ----- 左手边的表中的行在输出中至少要出现一次,而在右手边的行将只输出那些与左手边行有对应匹配的行。 如果输出的左手边表的行没有对应匹配的右手边表的行,那么在右手边行的字段将填充空(NULL)。
• 右连接
• 全连接
• 
• 聚集函数:
• 从多个输入行中计算出一个结果。 比如,我们有在一个行集合上计算 count(数目), sum(和),avg(均值), max(最大值)和min(最小值)的函数;
• 聚集同样也常用于 GROUP BY 子句;
• 
• 视图:
• 视图允许我们把表结构的细节封装起来,这些表可能因你的应用的进化而变化, 而这些变化却可以躲在一个一致的接口后面。
• 视图几乎可以在一个真正的表可以使用的任何地方使用。 在其它视图上面再建造视图也并非罕见。
• 
• 外键:保证数据完整性。
• primary key --- 主表中定义主键
• references "table name"("primary key name") --- 外键,引用主键
• 
• 事务:
• 一次事务的要点就是它把多个步骤捆绑成了一个单一的,不成功则成仁的操作;
• 事务被认为是原子的:从其它事务的角度来看,它要么是全部发生,要么完全不发生;
• 一旦一个事务完成并且得到数据库系统的认可, 那么它必须被真正永久地存储,并且不会在随后的崩溃中消失;
• 一个事务型数据库保证一个事务所做的所有更新在事务发出完成响应之前都记录到永久的存储中(也就是磁盘);
• 当多个事务并发地运行的时候,那么每个事务都不应看到其它事务所做的未完成的变化。
• 在 PostgreSQL 里,一个事务是通过把 SQL 命令用 BEGIN 和 COMMIT 命令包围实现的。我们决定不做提交, 那么我们可以发出 ROLLBACK 命令而不是 COMMIT 命令;
• PostgreSQL 实际上把每个 SQL 语句当做在一个事务中执行的来看待。 如果你没有发出 BEGIN 命令,那么每个独立的语句都有一个隐含的 BEGIN 和(如果成功的话) COMMIT 语句包围在周围。 一组包围在 BEGIN 和 COMMIT 语句中间的语句有时候被称做事务块。
• 我们可以通过使用 savepoints 的方法,在一个事务里更加精细地控制其中的语句。如果需要,你可以使用 ROLLBACK TO 回滚到该保存点。 则该事务在定义保存点到回滚到它之间的所有数据库更改都被抛弃,但是在保存点之前的修改将被保留。
• 释放或者回滚到一个保存点都会自动释放在其后定义的所有保存点。
• 
• 继承:
• 使用INHERITS
• 一个表可以从零个或者更多其它表中继承过来。
• 尽管继承经常是有用的,但是它还没有集成唯一约束或者外键,因此制约了其实用性。
• ONLY:保证只在当前table查询,不在它的子表查询。
• 
• 缺省值:default,serial
• 约束命名:CONSTRAINT 
  
• 检查约束:
• 字段约束   CHECK  
• 表约束 
  
• NOT NULL
• 非空约束:
• NULL约束:表示该字段没啥用。非SQL标准,为了与其他sql兼容。
• 唯一约束:(分“字段约束”和“表约束”) 
  
• UNIQUE
• 主键:PRIMARY KEY,唯一约束和非空约束的组合。一个表最多可以有一个主键(但是它可以有多个唯一和非空约束)。 关系型数据库理论告诉我们,每个表都必须有一个主键。PostgreSQL 并不强制这个规则,但我们最好还是遵循它。
• 外键:
 REFERENCES
 FOREIGN KEY (...) REFERENCES ...
 限制删除ON DELETE RESTRICT  禁止删除被引用的行
 级联删除ON DELETE CASCADE   在删除一个被引用的行的时候,引用它的行也会被自动删除掉。外键段上还有两个选项:set NULL和set DEFAULT。当被引用行删除时的动作。
 ON UPDATE• 模式:一个数据库包含一个或多个命名的 模式, 模式又包含表。模式还包含其它命名的对象,包括数据类型,函数, 以及操作符。同一个对象名可以在不同的模式
 里使用而不会导致冲突; 比如,schema1 和 myschema 都可以包含叫做 mytable的表。和数据库不同,模式不是严格分离的: 一个用户可以访问他所连接的数据库中的任意模式中的对象, 只要他有权限。  模式类似于操作系统层次的目录,只不过模式不能嵌套。以 pg_ 开头的模式名是保留给系统使用的, 用户不能创建这样的名字。• 没有声明任何模式名字就创建了表。 缺省时,这样的表(以及其他对象)都自动放到一个叫做"public" 的模式中去了。
• 搜索路径search_path
• 

 

General
   \c[onnect] [DBNAME|- USER|- HOST|- PORT|-]
                  connect to new database (currently "A")
   \cd [DIR]      change the current working directory
   \copyright     show PostgreSQL usage and distribution terms
   \encoding [ENCODING]
                  show or set client encoding
   \h [NAME]      help on syntax of SQL commands, * for all commands
   \prompt [TEXT] NAME
                  prompt user to set internal variable
   \password [USERNAME]
                  securely change the password for a user
   \q             quit psql
   \set [NAME [VALUE]]
                  set internal variable, or list all if no parameters
   \timing        toggle timing of commands (currently off)
   \unset NAME    unset (delete) internal variable
   \! [COMMAND]   execute command in shell or start interactive shell


 Query Buffer
   \e [FILE]      edit the query buffer (or file) with external editor
   \g [FILE]      send query buffer to server (and results to file or |pipe)
  \p             show the contents of the query buffer      打印缓冲区
   \r             reset (clear) the query buffer                       清空缓冲区
   \w FILE        write query buffer to file                          写到指定文件


 Input/Output
   \echo [STRING] write string to standard output
   \i FILE        execute commands from file
   \o [FILE]      send all query results to file or |pipe
   \qecho [STRING]
                  write string to query output stream (see \o)


 Informational
   \d [NAME]      describe table, index, sequence, or view
   \d{t|i|s|v|S} [PATTERN] (add "+" for more detail)
                  list tables/indexes/sequences/views/system tables  \da [PATTERN]  list aggregate functions
   \db [PATTERN]  list tablespaces (add "+" for more detail)
   \dc [PATTERN]  list conversions
   \dC            list casts
   \dd [PATTERN]  show comment for object
   \dD [PATTERN]  list domains
   \df [PATTERN]  list functions (add "+" for more detail)
   \dF [PATTERN]  list text search configurations (add "+" for more detail)
   \dFd [PATTERN] list text search dictionaries (add "+" for more detail)
   \dFt [PATTERN] list text search templates
   \dFp [PATTERN] list text search parsers (add "+" for more detail)
   \dg [PATTERN]  list groups
   \dn [PATTERN]  list schemas (add "+" for more detail)
   \do [NAME]     list operators
   \dl            list large objects, same as \lo_list
   \dp [PATTERN]  list table, view, and sequence access privileges
   \dT [PATTERN]  list data types (add "+" for more detail)
   \du [PATTERN]  list users
   \l             list all databases (add "+" for more detail)
   \z [PATTERN]   list table, view, and sequence access privileges (same as \dp)


 Formatting
   \a             toggle between unaligned and aligned output mode
   \C [STRING]    set table title, or unset if none
   \f [STRING]    show or set field separator for unaligned query output
   \H             toggle HTML output mode (currently off)
   \pset NAME [VALUE]
                  set table output option
                  (NAME := {format|border|expanded|fieldsep|footer|null|
                  numericlocale|recordsep|tuples_only|title|tableattr|pager})
   \t             show only rows (currently off)
   \T [STRING]    set HTML <table> tag attributes, or unset if none
   \x             toggle expanded output (currently off)


 Copy, Large Object
   \copy ...      perform SQL COPY with data stream to the client host  \lo_export LOBOID FILE
   \lo_unlink LOBOID    large object operations  \lo_import FILE [COMMENT]
  \lo_list

\d [ table ]

 
   列出数据库中的表,或(如果声明了)表  
  table 的列/字段.如果表名是用统配符 (“*”)声明的,列出所有表和表的列/字段信息. 
  
  
  \da 
  
 
   列出所有可用聚集. 
  
  
  \dd  
  object 
  
 pg_description 里对声明的对象的描述,对象可以是一个表,表中的列/字段,类型,操作符或聚集. 
  
 
   小技巧:并非所有对象在  
   pg_description 里有描述.此后期命令在快速获取  
   Postgres
 
  
  \df 
  
 
   列出函数. 
  
  
  \di 
  
 
   只列出索引. 
  
  
  \do 
  
 
   只列出操作符. 
  
  
  \ds 
  
 
   只列出序列. 
  
  
  \dS 
  
 
   列出系统表和索引. 
  
  
  \dt 
  
 
   只列出非系统表. 
  
  
  \dT 
  
 
   列出类型. 
  
  
  \e [  
  filename ] 
  
 
   编辑当前查询缓冲或文件  
  filename 的内容. 
  
  
  \E [  
  filename ] 
  
 
   编辑当前查询缓冲或文件  
  filename 的内容并且在编辑结束后执行之. 
  
  
  \f [  
  separator ] 
  
 
   设置域分隔符.缺省是单个空白. 
  
  
  \g [ {  
  filename |  
  |command } ] 
  
 
   将当前查询输入缓冲送给后端并且(可选的)将输出放到  
  filename 或通过管道将输出送给一个分离的Unix shell 用以执行  
  command. 
  
  
  \h [  
  command ] 
  
 
   给出声明的 SQL 命令的语法帮助.如果  
  command 不是一个定义的 SQL 命令(或在  
  psql 里没有文档),或没有声明  
  command ,这时  
  psql将列出可获得帮助的所有命令的列表.如果命令  
  command 是一个通配符(“*”),则给出所有 SQL 命令的语法帮助. 
  
  
  \H 
  
 HTML3 输出.等效于  
  -H 
  
  \i filename 
  
 从文件 filename 中读取查询到输入缓冲.从指定文件读取命令。 
  
  \l 
  
 
   列出服务器上所有数据库. 
  
  
  \m 
  
 psql 
  
  \o [ {  
  filename |  
  |command } ] 
  
 
   将后面的查询结果输出到文件  
  filename 或通过管道将后面结果输出到一个独立的Unix shell 里执行  
  command.如果没有声明参数,将查询结果输出到  
  stdout. 
  
  \p 
  
 
   打印当前查询缓冲区. 
  
  
  \q 
  
 psql 
  
  \r 
  
 
   重置(清空)查询缓冲区. 
  
  
  \s [  
  filename ] 
  
 
   将命令行历史打印出或是存放到  
  filename.如果省略  
  filename ,将不会把后继的命令存放到历史文件中.此选项只有在  
  psql 
  
  \t 
  
 
   切换输出的列/字段名的信息头和行记数脚注(缺省是开). 
  
  
  \T  
  table_options 
  
 HTML 3.0 格式输出时声明放在表  
  table ... 中的标记选项.例如, 
  border 将给你的表以边框.这必须和  
  \H 后期命令一起使用. 
  
  
  \x 
  
 HTML 
  
  \w  
  filename 
  
 
   将当前查询缓冲区输出到文件  
  filename. 
  
  
  \z 
  
 
   生成一个带有正确 ACL(赋予/禁止 权限)的数据库中所有表的输出列表. 
  
  
  \! [  
  command ] 
  
 
   回到一个独立的Unix shell或执行一个Unix 命令  
  command. 
  
  
  \? 
  
 
   获得关于反斜杠 (“\”) 命令的帮助. 
 
  
 一般选项
 \c[onnect] [数据库名|- [用户名称]]
 联接到新的数据库 (当前为 "test")
 \cd [目录名]     改变当前的工作目录
 \copyright       显示 PostgreSQL 用法和发布信息
 \encoding [编码]
 显示或设置客户端编码
 \h [名字]        SQL 命令的语法帮助, 用 * 可以看所有命令的帮助
 \q               退出 psql
 \set [名字 [值]]
 设置内部变量, 如果没有参数就列出所有
 \timing          查询计时开关切换 (目前是 关闭)
 \unset 名字      取消(删除)内部变量
 \! [命令]        在 shell 里执行命令或者开始一个交互的 shell 信息选项
 \d [名字]        描述表, 索引, 序列, 或者视图
 \d{t|i|s|v|S} [模式] (加 "+" 获取更多信息)
 列出表/索引/序列/视图/系统表
 \da [模式]       列出聚集函数
 \db [模式]       列出表空间 (加 "+" 获取更多的信息)
 \dc [模式]       列出编码转换
 \dC              列出类型转换
 \dd [模式]       显示目标的注释
 \dD [模式]       列出域
 \df [模式]       列出函数 (加 "+" 获取更多的信息)
 \dg [模式]       列出组
 \dn [模式]       列出模式 (加 "+" 获取更多的信息)
 \do [名字]       列出操作符
 \dl              列出大对象, 和 \lo_list 一样
 \dp [模式]       列出表, 视图, 序列的访问权限
 \dT [模式]       列出数据类型 (加 "+" 获取更多的信息)
 \du [模式]       列出用户
 \l               列出所有数据库 (加 "+" 获取更多的信息)
 \z [模式]        列出表, 视图, 序列的访问权限 (和 \dp 一样) 命令:     ABORT
 描述:     终止当前事务 命令:     ALTER DATABASE
 描述:     改变一个数据库 命令:     ALTER GROUP
 描述:     改变一个用户组 命令:     ALTER INDEX
 描述:     改变一个索引的定义 命令:     ALTER SEQUENCE
 描述:     改变一个序列生成器的定义 命令:     ALTER TABLE
 描述:     改变一个表的定义 命令:     ALTER TRIGGER
 描述:     改变一个触发器的定义
 语法:
 ALTER TRIGGER 名字 ON 表 RENAME TO 新名字 命令:     ALTER USER
 描述:     改变一个数据库用户 命令:     COPY
 描述:     在一个文件和一个表之间拷贝数据 命令:     CREATE TABLE
 描述:     定义一个新的表
将数据库 导出到 文件标识符 
 命令:\copy 表名 to 文件名|标准输出 [delimiter as '分隔符'] [null as 'null表示的字符串' ] 
 [csv quote as '引号的类型'] 

 解释: 
 可以将表中的数据输出到 文件或标准输出。 
 delimiter as '分隔符' :说明输出设备的文本中表的每个字段用什么字符分割,默认是tab; 
 null as 'null表示的字符串':说明输出设备的文本中表的NULL值的表示方法,默认为“\N”; 
 csv quote as '引号类型' :说明导出的csv文件中的引号类型是什么, 
 对于Postgres7.4以前的版本,不支持csv的导入与导出,这时不要使用这个可选项。 

 例子: 
 testdb=>\copy testtable to data.csv delimiter as ',' csv quote as '"' 
 这条命令将testtable表中的内容作为SQL语句,导出data.csv文件中。 
 delimiter as ',' :说明data.txt文本中表的每个字段用“逗号”分割; 
 csv quote as '"' :说明csv中的引号类型是“双引号”。 
 像前面说的:这个例子不适用在Postgres7.4以前的版本。 

 ------------------------------ 

 从 文件标识符 导入数据到数据库 

 命令:\copy 表名 form. 文件名|标准输入 [delimiter as '分隔符'] [null as 'null表示的字符串' ] 
 [csv quote as '引号的类型'] 

 解释: 
 可以从 文件名|标准输入 两个文件设备导入到指定的表中 
 delimiter as '分隔符' :说明输入设备的文本中表的每个字段用什么字符分割, 
 通常是tab,取决于copy出去的文件是什么参数; 
 null as 'null表示的字符串':说明输入设备的文本中表的NULL值的表示方法,通常为“\N”; 
 csv quote as '引号类型' :说明导入的csv文件中的引号类型是什么, 
 取决于copy出去的文件是什么参数。 

 例子: 
 testdb=>\copy testtable from data.csv delimiter as ',' csv quote as '"' 
 这条命令将data.csv文件中的文本,作为sql语句导入到testtable表, 
 delimiter as ',' :说明data.txt文本中表的每个字段用“逗号”分割; 
 csv quote as '"' :说明csv中的引号类型是“双引号”。  
• type 'string'
 'string'::type
 CAST ( 'string' AS type )