postgresql之copy

一,概念
copy在数据库表和文件之间交换数据
copy to 把一个表的所有内容都拷贝到一个文件(把数据追加到表中原有数据)
copy from 从一个文件里拷贝数据到一个表里
copy 导入导出数据十分快速!!!
二,用法
可以copy一整张表,可以copy一个表里的指定字段,也可以copy一个select结果
导出
copy 表名或者表名(列名)或者(select查询) to 一个绝对路径地址 with 格式;
导入
copy 表名或者表名(列名)from 一个绝对路径地址 with 格式;
举例:
copy user to ‘/tmp/data/test.csv’ with csv;
copy user(name,password) to ‘/tmp/data/test.csv’ with csv;
copy (select * from user) to ‘/tmp/data/test.csv’ with csv;
copy user from ‘/tmp/data/test.csv’ with csv;
copy user(name,password) from ‘/tmp/data/test.csv’ with csv;
注意:1 导入导出命令相似,只是把to改成了from
2 必须是在psql执行,也必须是postgres用户才可以
普通用户要用\copy
3 如果导出时有int[]型,最好做如下处理
\copy (select coalesce(integer_array,‘{}’)::integer[] as integer_array from table to ‘/tmp/data/test.csv’ with csv;
4 from的时候数据库中必须已经存在这张表
三 实际应用
导出成csv带表头

copy test to '/home/postgres/test.csv' With CSV DELIMITER ',' HEADER;

注:本文仅供自己学习,如有侵权,请私信
https://www.jb51.net/article/204298.htm
https://blog.csdn.net/wtopps/article/details/79097748

### PostgreSQL 使用 COPY 命令导入导出数据 #### 导入数据 `COPY` 命令是 PostgreSQL 中用于批量操作的主要工具之一,可以高效地将大量数据从文件加载到表中。对于从 CSV 文件导入数据的情况,基本语法结构如下: ```sql COPY table_name FROM 'file_path' WITH (FORMAT csv); ``` 这条语句会把位于 `file_path` 路径下的 CSV 文件的数据复制到名为 `table_name` 的表格里[^1]。 为了更具体展示如何执行这一过程,这里给出一个完整的例子来说明怎样利用 `COPY` 将外部存储设备上的 CSV 数据迁移到数据库内部的一个特定表内: 假设有一个叫作 `employees.csv` 的员工记录文件,目标是要把这些信息存放到已存在的 `employee_records` 表格当中,则相应的 SQL 语句应该是这样的形式: ```sql COPY employee_records FROM '/path/to/your/file/employees.csv' WITH (FORMAT csv, HEADER true); ``` 此命令不仅指定了要处理的目标表名 (`employee_records`) 和源文件位置 (`'/path/to/your/file/employees.csv'`) ,还额外设置了参数 `(FORMAT csv, HEADER true)` 来表明输入文件采用的是逗号分隔值格式并且首行包含了列标题。 #### 导出数据 同样地,如果想要把某个表的内容保存成 CSV 文件以便后续分析或者其他用途,也可以借助于相同的 `COPY` 功能实现反向操作——即从数据库提取数据至文件系统。其一般表达式为: ```sql COPY table_name TO 'output_file_path' WITH (FORMAT csv); ``` 这将会创建一个新的 CSV 文件并将选定表内的所有条目按照指定路径写出。例如,要把整个 `sales_data` 表转储为 `/tmp/sales_report.csv` 文件的话,就应当编写如下所示的查询指令: ```sql COPY sales_data TO '/tmp/sales_report.csv' WITH (FORMAT csv, HEADER true); ``` 上述代码片段展示了如何设置输出选项以确保生成的结果集具有可读性强的标准格式,并且保留原始字段名称作为头部信息的一部分。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值