postgresql—-COPY之表与文件之间的拷贝详解数据库
2023-06-13 09:20:11 时间
postgresql提供了COPY命令用于表与文件(和标准输出,标准输入)之间的相互拷贝,copy to由表至文件,copy from由文件至表。
示例1.将整张表拷贝至标准输出
test=# copy tbl_test1 to stdout; 1 HA 12 2 ha 543
示例2.将表的部分字段拷贝至标准输出,并输出字段名称,字段间使用 , 分隔
test=# copy tbl_test1(a,b) to stdout delimiter , csv header; 1,HA 2,ha
示例3.将查询结果拷贝至标准输出
test=# copy (select a,b from tbl_test1 except select e,f from tbl_test2 ) to stdout delimiter , quote " csv header; 2,ha
将标准输入拷贝至表中需要注意几点
1.字段间分隔符默认使用【Tab】键
2.换行使用回车键
3.结束使用反斜线+英文据点(/.)
4.最好指定字段顺序,要不然可能会错位赋值
示例4.将标准输入拷贝至表中
test=# copy tbl_test1(a,b,c) from stdin; Enter data to be copied followed by a newline. End with a backslash and a period on a line by itself. 1 公举 公主 2 万岁 万万岁 COPY 2 test=# select * from tbl_test1 ; a | b | c ---+------+-------- 1 | HA | 12 2 | ha | 543 1 | 公举 | 公主 2 | 万岁 | 万万岁 (4 rows)
示例5.从标准输入拷贝至表中,并将标准输入第一行作为字段名(和表中不符也没关系,copy会自动忽略第一行),字段分隔符为 ,
test=# copy tbl_test1(a,b,c) from stdin delimiter , csv header; Enter data to be copied followed by a newline. End with a backslash and a period on a line by itself. a,b,c 3,你好,hello 4,超人,super COPY 2 test=# select * from tbl_test1 ; a | b | c ---+------+-------- 1 | HA | 12 2 | ha | 543 1 | 公举 | 公主 2 | 万岁 | 万万岁 3 | 你好 | hello 4 | 超人 | super (6 rows)
以上是表与标准输出和标准输入间的相互拷贝,表与文件的拷贝和以上完全相同,只是将标准输出和标准输入换成文件。需要注意的是:
1.数据库用户必须有文件所在的路径的写权限。
2.如果表存在中文字符,导出至csv文件时需要设置编码为GBK,否则使用excel打开是中文显示乱码。
3.将文件导入表中时仍要考虑编码问题
示例6.将表拷贝至csv文件中
test=# copy tbl_test1 to /tmp/tbl_test1.csv delimiter , csv header; COPY 6
使用excel打开文件,中文显示为乱码
示例7. 将表以GBK编码拷贝至csv文件中
test=# copy tbl_test1 to /tmp/tbl_test1.csv delimiter , csv header encoding GBK; COPY 6
使用excel打开,中文显示正常
示例8.将刚才导出的文件再次拷贝至表中,使用默认编码UTF8
test=# copy tbl_test1(a,b,c) from /tmp/tbl_test1.csv delimiter , csv header; ERROR: invalid byte sequence for encoding "UTF8": 0xb9 CONTEXT: COPY tbl_test1, line 4
示例9.将刚才导出的文件再次拷贝至表中,使用GBK编码
test=# copy tbl_test1(a,b,c) from /tmp/tbl_test1.csv delimiter , csv header encoding GBK; COPY 6
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/4871.html
相关文章
- oracle创建数据库文件时出错_oracle错误代码大全
- Java上传文件到数据库「建议收藏」
- 使用PostgreSQL管理工具简化数据库维护(postgresql管理工具)
- 文件掌握oracle数据库dmp文件导出方法(oracle数据库导出dmp)
- PostgreSQL数据库同步实践(postgresql同步)
- PostgreSQL编码协议:改变数据库架构(postgresql协议)
- PostgreSQL:实现强大优势的数据库(postgresql优势)
- 优化PostgreSQL内核优化:提升数据库性能的必经之路(postgresql内核)
- 使用阿里云PostgreSQL轻松搭建数据库(阿里云postgresql)
- 基于Zabbix的PostgreSQL数据库监控(zabbix监控postgresql)
- Python如何连接PostgreSQL数据库?(python连接postgresql)
- PostgreSQL 接口:连接数据库的必备工具(postgresql接口)
- 数据库PostgreSQL:开放源码的分布式数据库管理系统(postgresql开源)
- 探究Oracle数据库的物理结构:从数据块到文件的一切(oracle的物理结构)
- Postgresql权威指南:打造完美数据库环境(postgresql手册)
- Postgresql数据库实现事务回滚技术(postgresql回滚)
- 如何有效地备份PostgreSQL数据库(备份postgresql)
- 管理PostgreSQL:优化内存管理提升数据库性能(postgresql内存)
- Oracle 数据库管理中的 XML 文件定义(.xml oracle)
- KML文件导入Oracle数据库实现空间数据高效管理(kml 导入oracle)
- 新方式导入Oracle数据库dp文件导入法(dp文件导入oracle)
- MySQL数据库不存在db文件的解决方法(mysql下没有.db)
- mssqlserver.ldf和.mdf的文件附加数据库的sql语句
- mssql无数据库日志文件恢复数据库的方法
- 将文件上传、下载(以二进制流保存到数据库)实现代码