ABN 조회 웹사이트의 호주 기업 등록부(Australian Business Register)에 등록된 회사의 ABN이 포함된 테이블을 생성하는 코드
abn_lookup
스키마에는 세 개의 테이블이 있습니다.
abns
: ABN 번호가 등록된 각 개체의 식별 정보를 담고 있는 메인 테이블입니다.
trading_names
: 이 테이블에는 등록된 ABN이 있는 각 회사의 거래 이름이 포함되어 있습니다.
dgr
: ABN별 공제 가능한 선물 수령 항목의 이름이 포함된 테이블입니다.
abns
이 테이블에는 . 필드는 다음과 같습니다.
abn
: 문자열로 작성된 ABN 번호입니다.
abn_status
: 이 필드는 ABN과 연관된 엔터티가 활성 상태인지(이 필드가 문자열 'ACT'와 동일) 취소되었는지(필드가 문자열 'CAN'과 동일) 여부를 자세히 설명합니다.
abn_status_from_date
: ABN이 등록된 날짜입니다.
record_last_updated_date
: ABN과 관련된 정보가 마지막으로 업데이트된 날짜입니다.
replaced
: (이 ABN이 다른 ???를 대체했는지 여부)
entity_type_ind
: 이 필드에는 엔터티 유형이 인덱스로 포함되어 있습니다(여기서는 ABR에서 제공됨).
entity_type_text
: 이 필드에는 텍스트로 작성된 엔터티 유형이 포함됩니다.
asic_number
: 엔터티가 ASIC에 등록된 경우 엔터티의 등록된 ACN 또는 ARBN입니다.
asic_number_type
: asic_number
의 유형(참고: 지금까지는 ABR이 실제로 이 열을 활용하지 않는 것 같습니다)
gst_status
: 이 필드는 해당 법인이 GST에 등록했는지 여부를 자세히 설명합니다. 현재 등록된 엔터티인 경우 이 필드는 'ACT' 문자열과 같습니다. 법인이 GST에 등록되었지만 등록이 취소된 경우 이 필드는 'CAN'과 같습니다. 법인이 GST에 등록한 적이 없는 경우 이 필드는 'NON'과 같습니다.
gst_status_from_date
: 법인이 GST에 등록된 날짜입니다. gst_status
가 'NON'인 경우 NULL과 같습니다.
main_ent_type
: 해당되는 경우 주 엔터티의 유형(참고: 이 열은 중복될 수 있음)
main_ent_name
: 엔터티가 개인이 아닌 경우 엔터티의 이름입니다.
main_ent_add_state
: 엔터티가 개인이 아닌 경우 엔터티의 주소 상태입니다.
main_ent_add_postcode
: 엔터티가 개인이 아닌 경우 엔터티 주소의 우편번호입니다.
legal_ent_type
: 해당되는 경우 법인의 유형(참고: 이 열은 중복될 수 있음)
legal_ent_title
: 법인이 개인인 경우 법인 이름의 직함(예: Mr, Mrs, Dr 등...)입니다.
legal_ent_family_name
: 법인이 개인인 경우 법인의 성입니다.
legal_ent_given_names
: 엔터티가 개인인 경우 엔터티의 이름을 하나의 문자열로 순서대로 작성합니다.
legal_ent_add_state
: 엔터티가 개인인 경우 엔터티의 주소 상태입니다.
legal_ent_add_postcode
: 법인이 개인인 경우 법인 주소의 우편번호입니다.
trading_names
이 테이블에는 특정 ABN을 가진 법인이 사업을 수행하는 모든 등록된 사업체 이름과 거래 이름이 포함되어 있습니다. 테이블의 각 행은 원본 대량 추출 xml 파일에 있는 OtherEntity
노드의 단일 인스턴스에 해당합니다. 필드는 다음과 같습니다.
abn
: 엔터티의 ABN입니다.name
: 업체명 또는 상호type
: 비즈니스 이름('BN'), 거래 이름('TRD') 또는 기타 이름('OTN') 등 이름의 유형입니다. dgr
이 테이블에는 특정 ABN을 가진 엔터티의 모든 기부 선물 수령인(DGR) 항목이 포함되어 있습니다. 테이블의 각 행은 원본 대량 추출 xml 파일에 있는 DGR
노드의 단일 인스턴스에 해당합니다. 필드는 다음과 같습니다.
abn
: 엔터티의 ABN입니다.name
: 기부선물 수령 대상 품목의 이름입니다.type
: 이름의 유형(항상 'DGR'인 것으로 보이므로 중복될 수 있음).dgr_status_from_date
: DGR 항목이 등록된 날짜입니다. get_abn_lookup_data.py
: 이것이 메인 프로그램입니다. 자동화된 헤드리스 Selenium 웹 브라우저를 사용하여 data.gov.au
의 ABN Bulk Extract 데이터 다운로드 페이지로 이동하고 두 개의 zip 파일을 다운로드한 다음 zip에서 xml 파일을 임시 디렉터리 abn_lookup/xml_files
로 추출합니다. 그런 다음 아래 설명된 프로그램을 사용하여 xml 파일을 여러 csv 출력으로 변환합니다. 이러한 csv 출력은 psql
명령을 사용하여 이러한 출력을 abns
, trading_names
및 dgr
테이블에 직접 쓰는 명령으로 파이프됩니다. 그런 다음 이 프로그램은 이전 작업 수행 실패의 성공 여부에 따라 아래에 설명된 여러 SQL 스크립트를 사용하여 이전 테이블을 삭제하고 새 테이블을 유지하거나 생성된 새 테이블을 삭제하고 이전 테이블을 유지하기로 결정합니다. .
xml_to_csv_abns.xsl
: 이는 원래 xml 파일 중 하나를 abns
테이블의 구조에 해당하는 csv 형식으로 XSLT 변환을 수행하기 위해 XSLT 프로그램에서 사용하는 xsl 스크립트입니다. 이 출력은 파이프로 연결된 후 이 테이블에 기록됩니다.
xml_to_csv_trading_names.xsl
: 위와 동일하지만 trading_names
테이블에 대한 것입니다.
xml_to_csv_dgr.xsl
: 위와 동일하지만 dgr
테이블용입니다.
create_new_abn_lookup_tables.sql
: 이 SQL 스크립트는 abn_lookup
의 현재 테이블 이름을 abns_old
, trading_names_old
및 dgr_old
로 바꾼 다음 이름이 abns
, trading_names
및 dgr
인 새 테이블을 생성합니다.
delete_old_abn_lookup_tables.sql
: 이 SQL 스크립트는 abns_old
, trading_names_old
및 dgr_old
삭제합니다. 이는 ABN 대량 추출의 모든 xml 파일 처리가 성공한 경우 get_abn_lookup_data.py
에서 활용됩니다.
keep_old_abn_lookup_tables.sql
: 이 SQL 스크립트는 새로 생성된 abns
, trading_names
및 dgr
삭제한 다음 abns_old
, trading_names_old
및 dgr_old
의 이름을 다시 원래 이름으로 바꿉니다. 이는 ABN 대량 추출에서 하나 이상의 xml 파일을 처리하는 데 실패한 경우 get_abn_lookup_data.py
에서 활용됩니다.