Skip to content

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

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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