`

postgresql问题小结

 
阅读更多

postgresql的copy命令

参考链接:https://www.cnblogs.com/alianbog/p/5621660.html

 

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;
a,b
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;
a,b
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

 

 10、postgresql中没有ifnull函数,可以使用coalesce达到效果

 

coalesce函数传入列名作为参数,查询结果中,当该列名的字段值为null时,会返回下一个参数的值,以此类推,如果每个参数都为null,结果返回null

 

SELECT 
COALESCE(wav."name",'(未知)') AS "name",
"count"(wat."id") AS "value"
FROM 
wdy_asset_types wat LEFT JOIN wdy_asset_venders wav ON wat.vender_id=wav."id"
WHERE 
EXTRACT(YEAR FROM wat.created_at)=2017
GROUP BY wav."name"

 

分享到:
评论

相关推荐

    Postgresql ALTER语句常用操作小结

    Postgresql ALTER语句常用操作小结

    PostgreSql新手必学入门命令小结

    主要介绍了PostgreSql新手必学入门命令小结,本文讲解了命令行登录数据库、查看帮助、常用命令等内容,需要的朋友可以参考下

    go语言web编程

    1.5. 小结 2.Go语言基础 2.1. 你好,Go 2.2. Go基础 2.3. 流程和函数 2.4. struct 2.5. 面向对象 2.6. interface 2.7. 并发 2.8. 小结 3.Web基础 3.1 web工作方式 3.2 Go搭建一个简单的web服务 3.3 Go如何使得web...

    数据库编程小结

    各种主流数据库有很多,包括Oracle, MS SQL Server, Sybase, Informix, MySQL, DB2, Interbase / Firebird, PostgreSQL, SQLite, SAP/DB, TimesTen, MS ACCESS等等。数据库编程是对数据库的创建、读写等一列的操作。...

    记一份SQLmap 使用手册小结(二)1

    前言其他高级用户自定义函数注入系统文件操作当数据库为 MySQL,PostgreSQL 或 Microsoft SQLServer ,并且当前用户有权限使用特定

    JAVA WEB典型模块与项目实战大全

    1.5 小结  第2章 myedipse开发工具对各种框架的支持  2.1 使用jsp的两种模式  2.2 struts框架的实现  2.3 hibernate框架的实现  2.4 jpa框架的实现  2.5 spring框架的实现  2.6 jsf框架的实现  2.7...

    Linux环境数据库管理员指南

    1.8 小结 13 1.9 常见问答 13 第2章 Red Hat Linux基本安装 16 2.1 引言 16 2.1.1 物理上独立的机器 16 2.1.2 选择 Linux分发包 16 2.2 初步的安装决定 17 2.2.1 硬件 17 2.2.2 多CPU 17 2.2.3 RAM 17 2.2.4 磁盘 17...

    php网络开发完全手册

    1.7 小结 23 第2章 PHP的基础语法 24 2.1 语言构成与工作原理 24 2.2 常量与变量 25 2.2.1 常量的定义 25 2.2.2 变量的定义 26 2.2.3 变量的作用域 27 2.2.4 动态变量 29 2.3 运算符和关键字 29 2.4 流程控制语法 30...

    SQL必知必会(第3版)--详细书签版

    1.4 小结 7 第2章 检索数据 8 2.1 SELECT语句 8 2.2 检索单个列 9 2.3 检索多个列 10 2.4 检索所有列 11 2.5 小结 12 第3章 排序检索数据 13 3.1 排序数据 13 3.2 按多个列排序 15 3.3 按列位置排序 15 ...

    go web编程

    第一部分 Go与Web应用 第1章 Go与Web应用 3 1.1 使用Go语言构建Web应用 3 1.1.1 Go与可扩展Web应用 4 1.1.2 Go与模块化Web应用 4 1.1.3 Go与可维护的Web应用 5 ...10.6 小结 287

    SQL必知必会(第3版-PDF清晰版)part1

    1.4 小结..... 7 第2章 检索数据...... 8 2.1 SELECT语句..... 8 2.2 检索单个列..... 9 2.3 检索多个列..... 10 2.4 检索所有列..... 11 2.5 小结..... 12 第3章 排序检索数据...... 13 3.1 排序数据..... 13 3.2...

    pg-promise:Node.js的PostgreSQL接口

    用于Node.js的PostgreSQL接口 关于 该库建立在之上,添加了以下内容: 自动连接 自动交易 强大的查询格式引擎+查询生成 声明式方法来处理查询结果 全局事件报告以进行集中处理 对外部SQL文件的广泛支持 支持所有...

    learning-golang:学习Golang编程

    2.8. 小结 3.Web基础 3.1 web工作方式 3.2 Go搭建一个简单的web服务 3.3 Go如何使得web工作 3.4 Go的http包详解 3.5 小结 4.表单 4.1 处理表单的输入 4.2 验证表单的输入 4.3 预防跨站脚本 4.4 防止多次递交表单 4.5...

    cdkeyswholesale:使用Django和Bootstrap构建的CD-Key批发网站

    我使用Django,Django-admin,Nginx,PostgreSQL,Bootstrap和其他几个较小的组件构建了该库。 有一些工作要做,特别是在某些业务流程上,但是该应用程序具有以下特点: 通过Django-admin进行产品管理上传数字商品...

    TicketTrader:该项目介绍了常见的体系结构样式和技术的实现

    1个n层结皮 n层体系结构的基本实现,具有REST API和单页应用程序前端。 使用的技术: 用于API和Web应用程序的.NET Core 带有PostgreSQL实体框架核心以实现持久性 Swagger用于生成API代码和文档 Docker-使许多托管...

Global site tag (gtag.js) - Google Analytics