Skip to content

Перенос данных FASHI в новую базу данных #1

@Kraysent

Description

@Kraysent

Нужно написать скрипт для загрузки данных обзора FASHI (https://fast.bao.ac.cn/cms/article/271/) через API в новую базу данных. Общий смысл того, что нужно сделать, следующий - создать новую запись о статье FASHI в нашей таблице библиографии, создать пустую таблицу для данных из статьи, наполнить эту таблицу. Нужно воспользоваться клиентом Hyperleda (https://github.com/HyperLEDA/client), алгоритм примерно следующий:

  1. Установить (или переустановить, если последний раз устанавливалась давно) последнюю версию окружения сервера: https://hyperleda.github.io/db-app/dev/environment.ru/, проверить что всё работает - тесты запускаются, база данных поднимается.
  2. Стартовать сервер при помощи команды make runserver.
  3. Загрузить CSV таблицу (можно руками): по ссылке выше скачать с сайта FASHI таблицу, открыть её в каком-нибудь текстовом редакторе, полюбоваться.
  4. Прочитать её при помощи pandas, в нём есть встроенная функция: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html. Дальше можно верхнюю её часть вывести в консоль при помощи print(df).
  5. Создание таблицы: https://github.com/HyperLEDA/client/blob/master/hyperleda/client.py#L72. Нужно прочитать CSV-файл, который предоставляет FASHI и, аналогично прошлому пункту, вызвать метод с нужными параметрами - описаниями таблицы, столбцов и прочего. Список столбцов pandas-таблицы можно получить при помощи df.columns. Функция, кроме названия столбца, принимает так же единицы измерения столбца (пока оставить "None" для всех, потом нужно будет правильно наполнить из второй строки csv) и описания столбцов (можно тоже оставить None или пустую строку). Эта функция вернёт id созданной в HyperLeda таблицы, который нужен в следующем пункте.
  6. Загрузка данных: https://github.com/HyperLEDA/client/blob/master/hyperleda/client.py#L83. Нужно входную CSV таблицу разбить на части по 10000 строк и для каждой части вызвать этот метод. Каждую часть (pandas-таблицу) нужно передать в аргумент data вместе с id таблицы из прошлого пункта.

Итогом будет python-скрипт, который позволяет по входной csv-таблице загрузить данные обзора FASHI из CSV-таблицы в HyperLeda.

Скрипт можно писать где угодно и потом его нужно загрузить в специальный общий репозиторий со скриптами загрузки данных из астрономических каталогов в директорию fashi: https://github.com/HyperLEDA/scripts. Загружать код в этот репозиторий можно аналогично основному репозиторию: https://hyperleda.github.io/db-app/dev/change.ru/, но при клонировании репозитория нужно заменить https://github.com/HyperLEDA/db-app.git на https://github.com/HyperLEDA/scripts.git.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions