前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PostgreSQL 助力文本分析,让文本分析飞起来

PostgreSQL 助力文本分析,让文本分析飞起来

作者头像
AustinDatabases
发布2021-07-15 15:10:52
7900
发布2021-07-15 15:10:52
举报
文章被收录于专栏:AustinDatabasesAustinDatabases

众所周知文本数据的分析,一直是EXCEL的天下, 通过多种EXCEL的方法来进行数据的处理. 但如果涉及到几个文本文件的数据的聚合分析,合并分析,函数分析等等这样的情况. 所以怎么能让文本文件进行数据分析成为一个数据分析领域的卖点.

这里有三个问题

1 文本数据是否需要导入到表

2 文本数据在查询时是否可以使用数据库本身的特性,或者优化的条件来

进行查询

3 查询的方式是否完全可以通过PGPLSQL的方式来进行大部分功能的查询

如果数据还需要导入到数据库中,则这个功能和其他的数据库并未有明显的区别,都是需要导入数据,就与我们本次的初衷所违背,我们需要的是,数据不导入到数据库的表中。

实际上POSTGRESQL 本身是可以进行对文件文件进行直接读取的。

下面我们就演示这个操作

create extension file_fdw;

create server fdw_server foreign data wrapper file_fdw;

create foreign table actor (actor_id int, first_name text, last_name text, last_update timestamp) SERVER fdw_server OPTIONS (filename '/pgdata/actor.csv', format 'csv' ); create foreign table film_actor (actor_id int, film_id int, last_update timestamp) SERVER fdw_server OPTIONS (filename '/pgdata/film_actor.csv', format 'csv' ); create foreign table film( film_id int, title text, description text, release_year text, language_id text, rental_duration text, rental_rate text, length text, replacement_cost text, rating text, last_update timestamp, special_features text) SERVER fdw_server OPTIONS (filename '/pgdata/film.csv', format 'csv' );

我们依次的创建 file_fdw, 创建外部表服务器, 创建对已经存在的三个CSV文件创建外部表。

此时我们已经可以通过POSTGRESQL的数据库服务引擎对三张CSV文件来进行数据的读取。

此时我们可以针对表进行复杂的查询的活动

查询本表本身并不是一个难题

实际上POSTGRESQL file_fdw 中的 data wapper 重要的作用在于可以让对外部数据源的查询使用数据库的优化手段,这点是其他的数据库无法做到的。

我们将两个外部表进行互相的INNER JOIN ,可以发现这两张表之间的INNER JOIN 的运算使用了 hash 的运算。

如果表更多可以吗?当然可以

select a.first_name,f.title from actor as a inner join film_actor as fa on a.actor_id = fa.actor_id inner join film as f on fa.film_id = f.film_id where a.first_name = 'Nick' and f.title = 'Adaptation Holes';

下面的查询中使用了hash join 的方式提高了查询的速度,尤其在针对文本数据较多的情况下。

实际上file_fdw的功能是一直在演进的,他作为POSTGRESQL 默认提供的模块在contrib module 中,对于本地文件的进行处理和读取的一种方法,这里要求文件必须能被COPY 方式能操作的文件。对于 file_fdw 操作的文件的属性来说,文件只能进行只读的访问。 在POSTGRESQL 11 之前只能使用super_user来操作文件,而在11后,我们有了几个默认的角色 ru pg_read_server_files pg_writer_server_files pg_execute_server_program 等角色。

对于

在读取文件前,是可以针对文件载入到数据库系统中进行评估一般使用默认的评估手段当然这也可能导致评估不准。在评估对外部FILE_FDW表扫描的情况上,也是使用与本地表一样的扫描的方法,seqscan 但在CPUS对于每一行的扫描中对比内部表的每行扫描的CPU 乘以10倍来计算。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-06-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AustinDatabases 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档