รหัสสำหรับสร้างตารางที่มี ABN สำหรับบริษัทที่ลงทะเบียนกับ Australian Business Register บนเว็บไซต์ค้นหา ABN
มีสามตารางในสคีมา abn_lookup
:
abns
: นี่คือตารางหลักซึ่งมีข้อมูลระบุตัวตนของแต่ละเอนทิตีด้วยหมายเลข ABN ที่ลงทะเบียนไว้
trading_names
: ตารางนี้ประกอบด้วยชื่อทางการค้าของแต่ละบริษัทที่มี ABN จดทะเบียน
dgr
: ตารางนี้ประกอบด้วยชื่อของรายการของขวัญที่นำไปหักลดหย่อนสำหรับ ABN แต่ละรายการ
abns
ตารางนี้มีรายการสำหรับหมายเลข ABN แต่ละรายการที่เคยลงทะเบียน พร้อมด้วย . ทุ่งนามี
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
: ACN หรือ ARBN ที่ลงทะเบียนของเอนทิตี หากเอนทิตีลงทะเบียนกับ ASIC
asic_number_type
: ประเภทของ asic_number
(หมายเหตุ: จนถึงตอนนี้ ดูเหมือนว่า ABR จะไม่ได้ใช้คอลัมน์นี้จริงๆ)
gst_status
: ช่องนี้ให้รายละเอียดว่านิติบุคคลได้หรือเคยลงทะเบียน GST หรือไม่ หากนิติบุคคลที่ลงทะเบียนอยู่ในปัจจุบัน ฟิลด์นี้จะเท่ากับสตริง 'ACT' หากนิติบุคคลได้รับการลงทะเบียนสำหรับ GST แต่การลงทะเบียนถูกยกเลิกตั้งแต่นั้นมา ฟิลด์นี้จะเท่ากับ 'CAN' หากนิติบุคคลไม่เคยลงทะเบียนสำหรับ GST ฟิลด์นี้จะเท่ากับ 'NON'
gst_status_from_date
: วันที่นิติบุคคลลงทะเบียนสำหรับ GST เท่ากับ NULL หาก gst_status
เป็น 'NON'
main_ent_type
: ประเภทของเอนทิตีหลัก หากมี (หมายเหตุ: คอลัมน์นี้อาจซ้ำซ้อน)
main_ent_name
: ชื่อของเอนทิตี หากเอนทิตีไม่ใช่บุคคลธรรมดา
main_ent_add_state
: สถานะของที่อยู่ของเอนทิตี หากเอนทิตีไม่ใช่บุคคลธรรมดา
main_ent_add_postcode
: รหัสไปรษณีย์ของที่อยู่ของนิติบุคคล หากนิติบุคคลไม่ใช่บุคคลธรรมดา
legal_ent_type
: ประเภทของนิติบุคคล ถ้ามี (หมายเหตุ: คอลัมน์นี้อาจซ้ำซ้อน)
legal_ent_title
: ตำแหน่ง (เช่น นาย นาง ดร ฯลฯ...) ของชื่อนิติบุคคล หากนิติบุคคลนั้นเป็นบุคคลธรรมดา
legal_ent_family_name
: นามสกุลของนิติบุคคล หากนิติบุคคลนั้นเป็นบุคคลธรรมดา
legal_ent_given_names
: ชื่อที่กำหนดของเอนทิตี หากเอนทิตีเป็นบุคคลธรรมดา ให้เขียนตามลำดับเป็นสตริงเดียว
legal_ent_add_state
: สถานะของที่อยู่ของเอนทิตี หากเอนทิตีเป็นบุคคลธรรมดา
legal_ent_add_postcode
: รหัสไปรษณีย์ของที่อยู่ของนิติบุคคล หากนิติบุคคลนั้นเป็นบุคคลธรรมดา
trading_names
ตารางนี้ประกอบด้วยชื่อธุรกิจที่จดทะเบียนและชื่อทางการค้าที่นิติบุคคลที่มี ABN กำหนดดำเนินธุรกิจอยู่ แต่ละแถวของตารางสอดคล้องกับอินสแตนซ์เดียวของโหนด OtherEntity
ในไฟล์ xml แยกเป็นกลุ่มดั้งเดิม ฟิลด์ต่างๆ ได้แก่:
abn
: ABN ของเอนทิตีname
: ชื่อธุรกิจหรือชื่อทางการค้าtype
: ประเภทของชื่อ ไม่ว่าจะเป็นชื่อธุรกิจ ('BN') ชื่อการค้า ('TRD') หรืออย่างอื่น ('OTN') dgr
ตารางนี้ประกอบด้วยรายการผู้รับของขวัญการบริจาค (DGR) ทั้งหมดของนิติบุคคลที่มี ABN ที่กำหนด แต่ละแถวของตารางสอดคล้องกับอินสแตนซ์เดียวของโหนด DGR
ในไฟล์ xml แยกเป็นกลุ่มดั้งเดิม ฟิลด์ต่างๆ ได้แก่:
abn
: ABN ของเอนทิตีname
: ชื่อสิ่งของผู้รับบริจาคtype
: ประเภทของชื่อ (ดูเหมือนว่านี่คือ 'DGR' เสมอดังนั้นจึงอาจซ้ำซ้อน)dgr_status_from_date
: วันที่ที่มีการลงทะเบียนรายการ DGR get_abn_lookup_data.py
: นี่คือโปรแกรมหลัก ใช้เว็บเบราว์เซอร์ซีลีเนียมแบบอัตโนมัติและไร้หัวเพื่อนำทางไปยังหน้าดาวน์โหลดสำหรับข้อมูล ABN Bulk Extract บน data.gov.au
ดาวน์โหลดไฟล์ zip สองไฟล์ จากนั้นแยกไฟล์ xml จาก zip ลงในไดเร็กทอรีชั่วคราว abn_lookup/xml_files
จากนั้นใช้โปรแกรมที่อธิบายด้านล่างเพื่อแปลงไฟล์ xml เป็นเอาต์พุต csv จำนวนหนึ่ง เอาต์พุต CSV เหล่านี้ถูกส่งไปยังคำสั่งซึ่งเขียนเอาต์พุตเหล่านี้โดยตรงลงในตาราง abns
, trading_names
และ dgr
โดยใช้คำสั่ง psql
จากนั้นโปรแกรมนี้จะตัดสินใจตามความสำเร็จของความล้มเหลวในการทำงานก่อนหน้าว่าจะลบตารางเก่าและเก็บตารางใหม่ไว้ หรือลบตารางใหม่ที่สร้างขึ้นและเก็บตารางเก่าไว้ โดยใช้สคริปต์ sql จำนวนหนึ่งที่อธิบายไว้ด้านล่าง .
xml_to_csv_abns.xsl
: นี่คือสคริปต์ xsl ที่จะใช้โดยโปรแกรม XSLT เพื่อทำการแปลง XSLT ของไฟล์ xml ต้นฉบับไฟล์ใดไฟล์หนึ่งให้เป็นรูปแบบ csv ซึ่งสอดคล้องกับโครงสร้างของตาราง abns
เอาต์พุตนี้ถูกไพพ์แล้วเขียนลงในตารางนี้
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
สิ่งนี้ถูกใช้โดย get_abn_lookup_data.py
ในกรณีที่การประมวลผลไฟล์ xml ทั้งหมดจากการแยก ABN จำนวนมากสำเร็จ
keep_old_abn_lookup_tables.sql
: สคริปต์ sql นี้จะลบ abns
, trading_names
และ dgr
ที่สร้างขึ้นใหม่ จากนั้นเปลี่ยนชื่อ abns_old
, trading_names_old
และ dgr_old
กลับไปเป็นชื่อเดิม สิ่งนี้ถูกใช้โดย get_abn_lookup_data.py
ในกรณีที่มีความล้มเหลวในการประมวลผลไฟล์ xml หนึ่งไฟล์ขึ้นไปจากการแยก ABN เป็นกลุ่ม