Код для создания таблиц, содержащих номера ABN для компаний, зарегистрированных в Австралийском бизнес-реестре, на веб-сайте поиска 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
: (заменил ли этот АБН другой???)
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
: это основная программа. Он использует автоматизированный веб-браузер Selenium без заголовка для перехода к страницам загрузки данных массового извлечения ABN на 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.