Code zum Erstellen von Tabellen mit den ABNs für Unternehmen, die im australischen Unternehmensregister auf der ABN-Suchwebsite registriert sind
Es gibt drei Tabellen im abn_lookup
-Schema:
abns
: Dies ist die Haupttabelle, die identifizierende Informationen zu jeder Entität mit einer registrierten ABN-Nummer enthält.
trading_names
: Diese Tabelle enthält die Handelsnamen für jedes Unternehmen mit einer registrierten ABN.
dgr
: Diese Tabelle enthält die Namen der abzugsfähigen Geschenkempfängerartikel für jede ABN.
abns
Diese Tabelle enthält einen Eintrag für jede ABN-Nummer, die jemals registriert wurde, zusammen mit der . Die Felder sind
abn
: Die ABN-Nummer, geschrieben als String.
abn_status
: Dieses Feld gibt an, ob die mit der ABN verknüpfte Entität entweder aktiv ist, wofür dieses Feld der Zeichenfolge „ACT“ entspricht, oder abgebrochen ist, wofür das Feld der Zeichenfolge „CAN“ entspricht.
abn_status_from_date
: Dies ist das Datum, an dem die ABN registriert wurde.
record_last_updated_date
: Das Datum, an dem die mit der ABN verknüpften Informationen zuletzt aktualisiert wurden.
replaced
: (ob diese ABN eine andere ersetzt hat ???)
entity_type_ind
: Dieses Feld enthält den Entitätstyp als Index (wie hier vom ABR angegeben)
entity_type_text
: Dieses Feld enthält den als Text geschriebenen Entitätstyp.
asic_number
: die registrierte ACN oder ARBN der Entität, wenn die Entität bei ASIC registriert ist.
asic_number_type
: der Typ der asic_number
(Hinweis: Bisher scheint die ABR diese Spalte nicht wirklich zu nutzen)
gst_status
: Dieses Feld gibt an, ob sich die Entität für die GST registriert hat oder jemals registriert hat. Wenn die Entität derzeit registriert ist, entspricht dieses Feld der Zeichenfolge „ACT“. Wenn die Entität für die GST registriert wurde, die Registrierung jedoch inzwischen storniert wurde, hat dieses Feld den Wert „CAN“. Wenn sich die Entität noch nie für die GST registriert hat, hat dieses Feld den Wert „NON“.
gst_status_from_date
: das Datum, an dem die Entität für die GST registriert wurde. Gleich NULL, wenn gst_status
„NON“ ist.
main_ent_type
: der Typ der Hauptentität, falls zutreffend (Hinweis: Diese Spalte ist möglicherweise redundant)
main_ent_name
: der Name der Entität, wenn es sich bei der Entität nicht um eine Einzelperson handelt.
main_ent_add_state
: der Status der Adresse der Entität, wenn die Entität keine Einzelperson ist.
main_ent_add_postcode
: die Postleitzahl der Adresse der Entität, wenn es sich bei der Entität nicht um eine Einzelperson handelt.
legal_ent_type
: ggf. die Art der juristischen Person (Hinweis: Diese Spalte ist möglicherweise überflüssig)
legal_ent_title
: der Titel (z. B. Herr, Frau, Dr. usw.) des Namens der Entität, wenn es sich bei der Entität um eine Einzelperson handelt.
legal_ent_family_name
: der Nachname der Entität, wenn es sich bei der Entität um eine Einzelperson handelt.
legal_ent_given_names
: die Vornamen der Entität, wenn es sich bei der Entität um eine Einzelperson handelt, der Reihe nach als eine Zeichenfolge geschrieben.
legal_ent_add_state
: der Status der Adresse der Entität, wenn es sich bei der Entität um eine Einzelperson handelt.
legal_ent_add_postcode
: die Postleitzahl der Adresse der Entität, wenn es sich bei der Entität um eine Einzelperson handelt.
trading_names
Diese Tabelle enthält alle registrierten Firmennamen und Handelsnamen, unter denen ein Unternehmen mit einer bestimmten ABN Geschäfte tätigt. Jede Zeile der Tabelle entspricht einer einzelnen Instanz eines OtherEntity
-Knotens in den ursprünglichen XML-Massenextraktdateien. Die Felder sind:
abn
: Die ABN der Entität.name
: der Firmenname oder Handelsnametype
: die Art des Namens, ob Firmenname ('BN'), Handelsname ('TRD') oder etwas anderes ('OTN'). dgr
Diese Tabelle enthält alle DGR-Elemente (Spendegeschenkempfänger) einer Entität mit einer bestimmten ABN. Jede Zeile der Tabelle entspricht einer einzelnen Instanz eines DGR
Knotens in den ursprünglichen XML-Massenextraktdateien. Die Felder sind:
abn
: Die ABN der Entität.name
: Der Name des Artikels, den der Empfänger des Spendengeschenks erhält.type
: der Typ des Namens (scheint immer „DGR“ zu sein, also wahrscheinlich überflüssig).dgr_status_from_date
: das Datum, an dem das DGR-Element registriert wurde. get_abn_lookup_data.py
: Dies ist das Hauptprogramm. Es nutzt einen automatisierten, kopflosen Selenium-Webbrowser, um zu den Download-Seiten für die ABN Bulk Extract-Daten auf data.gov.au
zu navigieren, lädt die beiden Zip-Dateien herunter und extrahiert dann die XML-Dateien aus den Zips in ein temporäres Verzeichnis abn_lookup/xml_files
. Anschließend verwendet es die unten beschriebenen Programme, um die XML-Dateien in eine Reihe von CSV-Ausgaben zu konvertieren. Diese CSV-Ausgaben werden an einen Befehl weitergeleitet, der diese Ausgaben mithilfe eines psql
-Befehls direkt in die Tabellen abns
, trading_names
und dgr
schreibt. Dieses Programm entscheidet dann, basierend auf dem Erfolg der fehlgeschlagenen Ausführung der vorherigen Aufgabe, entweder die alten Tabellen zu löschen und die neuen beizubehalten oder die neu erstellten Tabellen zu löschen und die alten Tabellen beizubehalten, wobei eine Reihe von SQL-Skripten verwendet werden, die ebenfalls unten beschrieben werden .
xml_to_csv_abns.xsl
: Dies ist ein XSL-Skript, das vom Programm XSLT verwendet wird, um eine XSLT-Transformation einer der ursprünglichen XML-Dateien in ein CSV-Format durchzuführen, das der Struktur der Tabelle abns
entspricht. Diese Ausgabe wird weitergeleitet und dann in diese Tabelle geschrieben.
xml_to_csv_trading_names.xsl
: wie oben, jedoch für die Tabelle trading_names
.
xml_to_csv_dgr.xsl
: wie oben, jedoch für die dgr
-Tabelle.
create_new_abn_lookup_tables.sql
: Dieses SQL-Skript benennt die aktuellen Tabellen in abn_lookup
in abns_old
, trading_names_old
und dgr_old
um und erstellt dann neue Tabellen mit den Namen abns
, trading_names
und dgr
.
delete_old_abn_lookup_tables.sql
: Dieses SQL-Skript löscht abns_old
, trading_names_old
und dgr_old
. Dies wird von get_abn_lookup_data.py
genutzt, falls die Verarbeitung aller XML-Dateien aus dem ABN-Massenextrakt erfolgreich ist.
keep_old_abn_lookup_tables.sql
: Dieses SQL-Skript löscht die neu erstellten abns
, trading_names
und dgr
und benennt dann abns_old
, trading_names_old
und dgr_old
wieder in ihre ursprünglichen Namen um. Dies wird von get_abn_lookup_data.py
für den Fall genutzt, dass bei der Verarbeitung einer oder mehrerer XML-Dateien aus dem ABN-Massenextrakt ein Fehler aufgetreten ist.