postgreSQL copy与\copy的区别

原创 2015年07月07日 15:28:55

区别是:

  • copy必须使用能够超级用户使用;
  • copy .. to file ,copy file to ..中的文件都是数据库服务器所在的服务器上的文件。
  • \copy 一般用户即可执行
  • \copy 保存或者读取的文件是在客户端所在的服务器

  比如当使用192.168.17.53连上192.168.17.52的数据库,使用copy tb1 to ‘/home/postgres/aa.txt’,该文件是存放在192.168.17.52上;
  当使用\copys时候就会把文件存放到客户端所在的服务器上,即使用\copy tb1 to ‘/home/postgres/aa.sql’,该文件是存放在192.168.17.53上;

环境:
host: 192.168.17.52
client:192.168.17.53

使用192.168.17.53登录到 192.168.17.52做演示:

- 1. 先到192.168.17.52的/home/postgres下看看当前的文件

[root@localhost postgres]# pwd
/home/postgres
[root@localhost postgres]# ls
archive  base  dump  pg_log  pp.sql  python  script  soft  tb10.csv  test.sql
[root@localhost postgres]# 

- 2. 使用copy命令进行导出

[postgres@localhost root]$ psql -h 192.168.17.52 -U postgres postgres
could not change directory to "/root": Permission denied
psql (9.3.5)
Type "help" for help.

postgres=# 
postgres=# copy bbs to '/home/postgres/bbs.sql';
COPY 31

使用copy的时候文件是保存在服务器端的,切换到192.168.17.52的/home/postgres下看看文件是否存在:

[root@localhost postgres]# pwd
/home/postgres
[root@localhost postgres]# ls
archive  base  bbs.sql  dump  pg_log  pp.sql  python  script  soft  tb10.csv  test.sql

- 3. 使用\copy命令进行复制:
在192.168.17.53下:

[postgres@localhost ~]$ pwd
/home/postgres
[postgres@localhost ~]$ ls
archive  archive_failover  base  pg_log  script  trigger
postgres=# \copy bbs to '/home/postgres/bbs.sql';
postgres=# 

在192.168.17.53下在看一下:

[postgres@localhost ~]$ pwd
/home/postgres
[postgres@localhost ~]$ ls
archive  archive_failover  base  bbs.sql  pg_log  script  trigger

使用\copy是备份到客户端上。

恢复的时候也是一样,使用copy是从服务端寻找文件,使用\copy是从客户端上寻找文件。

参考: http://francs3.blog.163.com/blog/static/40576727201412135333388/

版权声明:本文为博主原创文章,未经博主允许不得转载。

PostgreSQL COPY 导入/导出数据

COPY 命令可以快速的导入数据到 PostgreSQL 中,文件格式类似CVS之类。适合批量导入数据,比 \i 和恢复数据表快。 导出表数据到文件或 STDOUT : COPY tablename...
  • liujiayu2
  • liujiayu2
  • 2016年01月28日 13:34
  • 3870

PostgreSql中COPY的用法

一、Copy的基本语法 Copy的作用是复制数据在数据表和文件之间。 Copy在PostgreSql中的语法是(来自文档): 1、  将文件中的数据复制到表中: COPY table_name...
  • chuan_day
  • chuan_day
  • 2015年03月06日 15:08
  • 11171

postgreSQL copy与\copy的区别

区别是: copy必须使用能够超级用户使用; copy .. to file ,copy file to ..中的文件都是数据库服务器所在的服务器上的文件。 \copy 一般用户即可执行 \copy ...
  • luojinbai
  • luojinbai
  • 2015年07月07日 15:28
  • 2864

psql copy命令导入导出数据

test=> \conninfo You are connected to database "test" as user "a" via socket in "/tmp" at port "543...
  • lk_db
  • lk_db
  • 2017年10月15日 21:38
  • 541

PostgreSQL Copy 命令

COPY --  在表和文件之间拷贝数据 Synopsis COPY tablename [ ( column [, ...] ) ] FROM { 'filename' | STDIN }...
  • kwame211
  • kwame211
  • 2017年07月27日 09:07
  • 1723

COPY命令:为PostgreSQL批量导入数据

COPY命令:为PostgreSQL批量导入数据 任务:将excel表中的数据导入到PostgreSQL数据库的某张表中。 工具:PostgreSQL客户端pgAdmin。 步骤: 1.将...
  • namelb
  • namelb
  • 2012年08月26日 20:49
  • 20027

postgresql----COPY之表与文件之间的拷贝

postgresql提供了COPY命令用于表与文件(和标准输出,标准输入)之间的相互拷贝,copy to由表至文件,copy from由文件至表。   示例1.将整张表拷贝至标准输出 tes...
  • azhegps
  • azhegps
  • 2017年07月27日 11:08
  • 306

postgresql copy的使用一例

CREATE OR REPLACE FUNCTION dbo.gps_write_files()   RETURNS trigger AS $BODY$ declare dir varcha...
  • weixin_36707770
  • weixin_36707770
  • 2017年04月16日 15:07
  • 469

Postgresql中 copy from 的使用

可以使用类似这样的命令进行导入: copy target_table_name (field_1, field_2, field_3) from 'C:\sourceData.txt' with ( ...
  • baitaibai
  • baitaibai
  • 2016年12月10日 14:53
  • 2947

PostgreSQL COPY命令

COPY Name COPY -- 在表和文件之间拷贝数据 Synopsis COPY table_name [ ( column [, ...] ) ] FROM { 'filenam...
  • lyc417356935
  • lyc417356935
  • 2014年04月18日 00:50
  • 950
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:postgreSQL copy与\copy的区别
举报原因:
原因补充:

(最多只允许输入30个字)