`

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 提供了强大的 `ALTER` 语句来实现这些功能,包括增加列、删除列、更改列数据...

    postgresql-9.4-A4

    ### 小结 PostgreSQL 9.4 是一款功能强大且高度可扩展的关系型数据库管理系统。它不仅提供了丰富的 SQL 功能支持,还拥有许多高级特性,如视图、事务处理、窗口函数等。此外,PostgreSQL 社区对于 Bug 的处理也非常...

    PostgreSQL-9.6.0-CN

    - **3.7 小结**:总结了本章所学的关键知识点。 ##### 4. SQL 语言 - 语法详解 - **4.1 词法结构**:深入分析了 SQL 语言的词法结构,包括标识符、关键字、常量等。 - **4.1.1 标识符和关键词**:解释了标识符...

    PostgreSQL内核分析

    #### 三、小结 PostgreSQL的进程架构设计体现了其对高性能、高可靠性的追求。通过明确分工和合理的进程管理机制,PostgreSQL能够在复杂的应用场景下保持高效稳定运行。深入了解这些进程的工作原理对于开发者来说是...

    3-Ibrar--PostgreSQL Conf Beijing 2019 - Deep Dive to PostgreSQL Indexes.pdf

    8. 小结 深入了解PostgreSQL索引对于管理高性能数据库环境至关重要。通过精确的索引选择和维护策略,可以显著提升数据库的整体性能。Ibrar Ahmed的培训和提供的PPT资料为数据库管理员提供了一个深入研究PostgreSQL...

    PostgreSQL与MySql比较

    ##### 3.6 小结 总的来说,MySQL和PostgreSQL各有千秋,选择哪种数据库取决于具体的应用场景和需求。如果需要高性能、易于管理和部署,则MySQL是更好的选择;如果需要强大的功能支持、高度的数据完整性和标准化,则...

    [PostgreSQL:Up.and.Running(2012.7)].Regina.Obe.文字版

    #### 小结 《PostgreSQL: Up and Running》是一本非常适合希望深入了解PostgreSQL数据库系统的技术人员的指南。书中不仅覆盖了基本概念和技术细节,还提供了实用的操作建议和最佳实践。无论是初学者还是有经验的...

    PostgreSql新手必学入门命令小结

    标题和描述中提到的知识点主要围绕着PostgreSQL数据库的基本操作和常用命令,包括如何通过命令行登录数据库,查看帮助文档,以及使用一系列基础的数据库管理命令。以下是对这些知识点的详细解读: 1. 命令行登录...

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

    这篇小结主要关注SQLmap的高级功能,包括自定义函数注入、系统文件操作、文件读写、执行操作系统命令以及利用Meterpreter进行进一步的攻击。 1. **自定义函数注入**: SQLmap允许用户在MySQL和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...

    数据库备份小结

    2. 第三方工具:如Oracle的RMAN、SQL Server Management Studio(SSMS)、以及开源工具如pg_dump(PostgreSQL)和MongoDB的mongodump。 四、备份存储 1. 磁盘:快速存取,但可能存在硬件故障风险。 2. 网络存储:...

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

    django中的setting最佳配置小结

    Django支持多种数据库,包括SQLite(默认),MySQL,PostgreSQL等。对于SQLite,只需指定数据库文件的位置。若使用MySQL,你需要替换数据库引擎,设置数据库名、用户名、密码和主机等信息。别忘了,如果你使用的...

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

Global site tag (gtag.js) - Google Analytics