Redshift 有没有办法从一个文本块中提取所有 URL,每个 URL 都作为单独的行?

Posted

技术标签:

【中文标题】Redshift 有没有办法从一个文本块中提取所有 URL,每个 URL 都作为单独的行?【英文标题】:Is there a way in Redshift to extract all URLs from a block of text each as a separate row? 【发布时间】:2019-02-20 21:48:44 【问题描述】:

我正在尝试从可能包含 0、1 或大量 URL 的文本块中提取特定格式的所有 URL。

例如,一行可能有以下值:

'一些文字 blahblahblah.com 更多文字 secondwebsite.com 更多测试'

我希望在我的输出中表示为两行:

'blahblahblah.com'

'secondwebsite.com'

我可以使用REGEXP_SUBSTRSPLIT_PART 来获取第一个.com 事件,但理想情况下我可以分别提取所有事件。有没有办法做到这一点?

【问题讨论】:

【参考方案1】:

从单个输入行返回多个输出行在 SQL 中并不容易。

您需要交叉连接到一个数字表(例如,一个包含包含1, 2, 3... 的行的表,然后使用该数字来引用输入行的单独部分。

底线:有可能,但很混乱。尝试找到实现此目的的替代方法。

【讨论】:

哦,我明白了——这听起来很乱但仍然可行,如果我最终需要这样做,我会使用它!非常感谢!【参考方案2】:

如果你想从具有多个 URL 的字段中创建单独的行,这在 SQL 中通常是不可行的,我建议你使用 ETL 工具或一些脚本语言如 python 来做到这一点。

【讨论】:

啊,好吧,我希望有办法,但我太新手了,不知道!感谢您的输入:)

以上是关于Redshift 有没有办法从一个文本块中提取所有 URL,每个 URL 都作为单独的行?的主要内容,如果未能解决你的问题,请参考以下文章

从文本块中提取相关标签/关键字

有没有办法通过 OCR 从图像中提取文本?任何人都好心推荐例子..谢谢

Redshift - 根据模式提取数据

Webpack:从条目和子块中提取公共模块以分离公共块

将数据从 s3 复制到 redshift 时忽略所有无效记录

有没有办法使用 RedShiftCopyActivity 仅将特定列从 RedShift 复制到 S3?