Найти тему
Властелин машин

Как автоматизировать загрузку в базу данных таблицы из файла

Оглавление

В данной статье я поделюсь рецептом загрузки таблицы в базу данных с использованием языка Python. Вся трудная работа будет переложена на плечи этого гибкого инструмента, а вы будете пользоваться только его привычными и мощными библиотеками.

Рассмотрим задачу на примере системы управления базой данных PostgreSQL. Для взаимодействия с ней будем использовать библиотеку psycopg2 (как это делать рассказывал ранее), а для чтения таблицы из файла (данные о пассажирах Титаника) - библиотеку Pandas (рассказывал ранее ).

Создание таблицы

На данном этапе наша задача заключается в формировании строки запроса на создание новой таблицы. Для этого потребуется задать ей имя (table_name в сценарии ниже), а также заключенную в круглые скобки строку с перечислением через запятую пар вида - имя столбца тип столбца. Последние получим с помощью Pandas, а именно свойства dtypes, которое для DataFrame возвращает объект Series с индексом в виде названий столбцов и значениями в виде их типов.

-2

Также построим словарь соответствий типов из таблицы Pandas и таблицы в базе данных (types_pd2sql, возможно, вам потребуется его дополнить) и напишем функцию, трансформирующую первый во второй (conv_type). У меня получился следующий сценарий:

-3

Заполнение таблицы

Как и раньше, основная задача - сформировать корректную строку запроса. Основной проблемой являются отсутствующие данные, из-за чего потребуется в INSERT вводить не только значения, но и названия столбцов. Также для строковых полей нужно обрамлять значения в одинарные кавычки (соответственно, внутренние одинарные заменять на двойные).

-4

Теперь смотрим, как будет выглядеть наша таблица в базе данных:

-5

Вот такой способ загрузки в базу данных таблицы из файла получился у меня. А какими инструментами пользуетесь вы?

-6