如何在Redshift中解析主机的字符串?

时间:2013-06-26 03:19:18

标签: postgresql amazon-redshift

我正在寻找与Hive's parse_url(..., 'HOST')相当的Postgres(实际为Redshift)。

Postgres docs说它有一个URL解析器作为其全文搜索的一部分。这篇博文有a regex,可能是也可能不是防弹的。什么是最好的?

3 个答案:

答案 0 :(得分:8)

在Redshift开始支持PostgreSQL的正则表达式函数之前,如果你想在Redshift SQL中从HTTP / S URL中获取主机,你将不得不做类似的事情:

select split_part(url, '/', 3) as host from my_table

答案 1 :(得分:8)

Redshift现在有一个REGEXP_SUBSTR功能:

它在字符串中搜索正则表达式并返回匹配的第一个子字符串。提取主机的正则表达式的一个示例:

select REGEXP_SUBSTR(url, '[^/]+\\.[^/:]+') from my_table;

答案 2 :(得分:1)

如果您没有使用Redshift,我会说"使用PL / Perlu,PL / Python或其他一种过程语言来获取常规的URL解析器"。既然你是Pg 8.1的专有分支,你就不得不接受我怀疑的hacky regexp。

无法从SQL级别访问全文搜索URL解析器。你可以写一个C扩展来很容易地将函数暴露给SQL,但当然你不能在Redshift中安装扩展,所以它再也不会给你带来任何好处。

滥用正则表达式的时间。

(顺便说一句,谢谢你实际上说你正在红移;太多人说&#34; PostgreSQL&#34;当他们的意思是&#34;一个模糊的基于PostgreSQL的托管版本的ParAccel&#34;)< / p>