我正在寻找与Hive's parse_url(..., 'HOST')相当的Postgres(实际为Redshift)。
Postgres docs说它有一个URL解析器作为其全文搜索的一部分。这篇博文有a regex,可能是也可能不是防弹的。什么是最好的?
答案 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>