Código para crear tablas que contienen los ABN para empresas registradas en el Registro Comercial de Australia en el sitio web de búsqueda de ABN
Hay tres tablas en el esquema abn_lookup
:
abns
: esta es la tabla principal que contiene información de identificación de cada entidad con un número ABN registrado.
trading_names
: esta tabla contiene los nombres comerciales de cada empresa con un ABN registrado.
dgr
: esta tabla contiene los nombres de los artículos del destinatario del regalo deducible para cada ABN.
abns
Esta tabla tiene una entrada para cada número ABN que alguna vez se haya registrado, junto con el archivo . Los campos son
abn
: El número ABN, escrito como una cadena.
abn_status
: este campo detalla si la entidad asociada con el ABN está activa, para lo cual este campo es igual a la cadena 'ACT', o cancelada, para lo cual el campo es igual a la cadena 'CAN'.
abn_status_from_date
: esta es la fecha en que se registró el ABN.
record_last_updated_date
: la fecha en que se actualizó por última vez la información asociada con el ABN.
replaced
: (¿si este ABN ha reemplazado a otro?)
entity_type_ind
: este campo contiene el tipo de entidad como índice (como lo indica el ABR aquí)
entity_type_text
: este campo contiene el tipo de entidad escrito como texto.
asic_number
: el ACN o ARBN registrado de la entidad, si la entidad está registrada en ASIC.
asic_number_type
: el tipo de asic_number
(nota: hasta ahora, parece que el ABR realmente no hace uso de esta columna)
gst_status
: este campo detalla si la entidad se ha registrado o se ha registrado alguna vez para el GST. Si la entidad está actualmente registrada, este campo es igual a la cadena 'ACT'. Si la entidad se registró para el GST pero el registro se canceló desde entonces, este campo es igual a 'CAN'. Si la entidad nunca se ha registrado para el GST, este campo es igual a "NO".
gst_status_from_date
: la fecha en la que la entidad se registró para el GST. Igual a NULL si gst_status
es 'NON'.
main_ent_type
: el tipo de entidad principal, si corresponde (nota: esta columna puede ser redundante)
main_ent_name
: el nombre de la entidad, si la entidad no es un individuo.
main_ent_add_state
: el estado de la dirección de la entidad, si la entidad no es un individuo.
main_ent_add_postcode
: el código postal de la dirección de la entidad, si la entidad no es un individuo.
legal_ent_type
: el tipo de entidad jurídica, si corresponde (nota: esta columna puede ser redundante)
legal_ent_title
: el título (es decir, Sr., Sra., Dr., etc.) del nombre de la entidad, si la entidad es un individuo.
legal_ent_family_name
: el apellido de la entidad, si la entidad es un individuo.
legal_ent_given_names
: los nombres de pila de la entidad, si la entidad es un individuo, escritos en orden como una cadena.
legal_ent_add_state
: el estado de la dirección de la entidad, si la entidad es un individuo.
legal_ent_add_postcode
: el código postal de la dirección de la entidad, si la entidad es un individuo.
trading_names
Esta tabla contiene todos los nombres comerciales registrados y los nombres comerciales con los que opera una entidad con un ABN determinado. Cada fila de la tabla corresponde a una única instancia de un nodo OtherEntity
en los archivos xml de extracción masiva originales. Los campos son:
abn
: El ABN de la entidad.name
: el nombre comercial o nombre comercialtype
: el tipo de nombre, ya sea un nombre comercial ('BN'), un nombre comercial ('TRD') u otra cosa ('OTN'). dgr
Esta tabla contiene todos los elementos del destinatario de donación (DGR) de una entidad con un ABN determinado. Cada fila de la tabla corresponde a una única instancia de un nodo DGR
en los archivos xml de extracción masiva originales. Los campos son:
abn
: El ABN de la entidad.name
: el nombre del artículo del destinatario del regalo de la donación.type
: el tipo de nombre (parece que siempre es 'DGR', por lo que probablemente sea redundante).dgr_status_from_date
: la fecha en que se registró el artículo DGR. get_abn_lookup_data.py
: este es el programa principal. Utiliza un navegador web Selenium automatizado y sin cabeza para navegar a las páginas de descarga de datos de ABN Bulk Extract en data.gov.au
, descarga los dos archivos zip y luego extrae los archivos xml de los zips en un directorio temporal abn_lookup/xml_files
. luego utiliza los programas que se describen a continuación para convertir los archivos xml en una serie de salidas csv. Estas salidas csv se canalizan a un comando que las escribe directamente en las tablas abns
, trading_names
y dgr
, usando un comando psql
. Luego, este programa decide, basándose en el éxito o el fracaso de la tarea anterior, eliminar las tablas antiguas y conservar las nuevas, o eliminar las nuevas producidas y conservar las tablas antiguas, utilizando una serie de scripts SQL que también se describen a continuación. .
xml_to_csv_abns.xsl
: este es un script xsl que utilizará el programa XSLT para realizar una transformación XSLT de uno de los archivos xml originales a un formato csv que corresponde a la estructura de la tabla abns
. Esta salida se canaliza y luego se escribe en esta tabla.
xml_to_csv_trading_names.xsl
: igual que el anterior, pero para la tabla trading_names
.
xml_to_csv_dgr.xsl
: igual que el anterior, pero para la tabla dgr
.
create_new_abn_lookup_tables.sql
: este script SQL cambia el nombre de las tablas actuales en abn_lookup
a abns_old
, trading_names_old
y dgr_old
, luego crea nuevas tablas con los nombres abns
, trading_names
y dgr
.
delete_old_abn_lookup_tables.sql
: este script SQL elimina abns_old
, trading_names_old
y dgr_old
. get_abn_lookup_data.py
lo utiliza en el caso de que el procesamiento de todos los archivos xml del extracto masivo de ABN sea exitoso.
keep_old_abn_lookup_tables.sql
: este script SQL elimina los abns
, trading_names
y dgr
recién producidos, luego cambia el nombre abns_old
, trading_names_old
y dgr_old
a sus nombres originales. get_abn_lookup_data.py
lo utiliza en el caso de que se haya producido algún error al procesar uno o más de los archivos xml del extracto masivo de ABN.