2013-07-27 3 views
1

토큰에 열을 분할하고, 나는 그런 "http://www.Yahoo.com"로 URL을 가진 열이Postgres - 분할 및 가입 방법?

(당신은 파이썬, 자바, 루비와 같은 다른 프로그래밍 언어로 할 수있는 등)을 가입 할 수있는 방법이 있나요, 그리고 "Yahoo.com"을 기본 도메인 (하위 도메인이 아닌)에서 추출하고 싶습니다. URL은 양식이 될 수 있습니다

내가 HTTP 후 모든 것을 추출하는 정규식을 사용하여 계획되었다

: // 그리고 다음 슬래시 앞에. 그런 다음 기간 (.)으로 URL을 분할 한 다음 마지막 2 개의 토큰을 합칩니다.

정규식을 사용하면 http://www.yahoo.com에서 www.yahoo.com을 추출 할 수 있습니다. 스플릿/조인을 사용하면 www.yahoo.com에서 yahoo.com을 얻을 수 있습니다. 문제는 Postgres를 사용하여 분할/조인하는 방법을 모른다는 것입니다.

방법에 대해 알고 계시나요? 아니면 더 나은 대안?

답변

3

이것은 당신이 요청 상당히 접근하지로 일치 할 수 있지만, 당신이 원하는 것을 얻을해야합니다

vinod=# select * from table; 
      url     
---------------------------------- 
http://www.domain.com 
http://domain.com 
http://domain.com/page/page1 
http://www.domain.com/page/page2 
http://www.domain.com/ 
(5 rows) 

vinod=# select substring(substring(url from 'http[s]*://([^/]+)') from '\w+\.\w+$') from table; 
substring 
------------ 
domain.com 
domain.com 
domain.com 
domain.com 
domain.com 
(5 rows) 

내부 substring 명령은 전체 꺼내서 외부 substring 명령은 마지막 두 조각을 꺼냅니다. Postgresql split 및 join 명령은 평범한 스크립팅 언어만큼 강력하지 않으므로 가능한 경우 DB에서 물건을 꺼낸 후에 이런 종류의 작업을 수행하는 경향이 있습니다. 토큰에

0

당신은 \w+.[^.]+$

http://www.domain.com -> domain.com 
http://domain.com -> domain.com 
http://domain.com/page/page1 -> domain.com/page/page1 
http://www.domain.com/ -> domain.com/ 
http://www.domain.com/page/page2 -> domain.com/page/page2 
+0

http://domain.com/page/page1-> domain.com 싶습니다. 어떻게 할 수 있습니까? –

+0

그런 다음 '\ w + [.] \ w + $')에서 'select substring (subststring (url from'(\ w + [.])? \ w + [.] \ w + ') –

0

분할 것들이 꽤 몇 가지 방법으로 수행 할 수 있습니다

  • regexp_split_to_table/regexp_split_to_array
  • string_to_array
  • 수동 substring 추출 또는 substring(... from 'pattern')
  • 전체 텍스트 (단순 고정 delimter 분할에 대한) 검색의 to_tsvectorto_tsquery
  • 절차 란 아마하지만 - 게이지 라이브러리는, 펄이나 파이썬 URL 라이브러리와 같은 자연 언어 처리를위한 파이썬 + NLTK 등

는이 경우 regexp_split_....를 사용하여 정규 표현식을 사용하여 URL 분할을 할 수 그것은 아마 많은 용도에 대한 확인이다 이건 아니야.고려 :

  • 내 도메인, ringerc.id.au
  • www.ecu.edu.au
  • www.transperth.wa.gov.au ("주"도메인 ecu.edu.au입니다) ("주"도메인 것은 transperth.wa.gov.au입니다)
  • ( "메인"도메인입니다) tartarus.uwa.edu.au ("주"도메인은 uwa.edu.au입니다)

행운을 빕니다 정규 표현식을 사용하여 모든 국가 레지스트리 및 하위 레지스트리 변형을 처리합니다. 적절한 URL 구문 분석기를 사용하여 도메인을 추출한 다음 올바른 도메인 인식 라이브러리를 사용하여 "기본"도메인을 용도에 맞게 선택하십시오. 우선 plperl 및 the URL::Split 또는 URI 모듈을 사용하는 것이 좋습니다. 또는 지원되는 절차 언어 (Python, TCL, 무엇이든간에) 원하는 URL 파서. 그런 다음 정규 표현식을 사용하는 것보다 원하는 기준에 따라 의미있는 도메인 및 하위 도메인을 식별하고 사용할 수있는 언어에 적합한 라이브러리를 찾습니다. 다시,

  • array_to_string
  • string_agg
  • || 연결 연산자
  • 절차 적 언어 문자열 연산 및 라이브러리 URL 작업

:

는 유사하게 많은 옵션을 합치는 경우 나는 이것을 할 것을 제안 할 것이다. 적절한 기본 URL 라이브러리가있는 PL