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...

PostgreSql中COPY的用法

一、Copy的基本语法 Copy的作用是复制数据在数据表和文件之间。 Copy在PostgreSql中的语法是(来自文档): 1、  将文件中的数据复制到表中: COPY table_name...

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

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

Postgresql中 copy from 的使用

可以使用类似这样的命令进行导入: copy target_table_name (field_1, field_2, field_3) from 'C:\sourceData.txt' with ( ...

postgres copy语句的使用

工作中,我们经常需要将一张表里面的数据复制到另外一张表。当然,pg中可以利用pg_dump和pg_restore来做备份与恢复。 但是copy同样可以做这件事,并且copy用法还比较灵活,可以指定复...

PostgreSQL中copy命令以二进制形式传输数据的二进制格式

有用户想知道pg中copy命令使用二进制文件时二进制文件的格式,这个格式pg的使用文档里其实已经有了,这儿结合例子说明的更具体一些,现解析如下: 先看一下copy命令的语法,然后做个例子,根据例子解...

PostgreSQL Copy 命令

COPY --  在表和文件之间拷贝数据 Synopsis COPY tablename [ ( column [, ...] ) ] FROM { 'filename' | STDIN }...

PostgreSQL COPY命令

COPY Name COPY -- 在表和文件之间拷贝数据 Synopsis COPY table_name [ ( column [, ...] ) ] FROM { 'filenam...

PostgreSQL将表导出为CSV(服务器端、客户机端)完整版

如下使用COPY命令可将表内容导出到CSV文件。COPY (select id as COL_ID, name as COL_NAME from my_tab order by id) to 'D:/...
  • fm0517
  • fm0517
  • 2016年11月01日 15:15
  • 3297

postgresql图片等二进制数据的存储(copy命令,bytea类型)

COPY语句 COPY table_name [ ( column_name [, ...] ) ] FROM { 'filename' | STDIN } [ [ WITH ] ( ...
  • djskl
  • djskl
  • 2015年04月13日 22:02
  • 3432
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:postgreSQL copy与\copy的区别
举报原因:
原因补充:

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