Как използвам Cx Oracle и няколко други библиотеки на Python за автоматизиране на малки ETL задачи

Използвах cx_Oracle модул за разширение на Python за достъп до моята база данни на Oracle и успях да автоматизирам повечето си малки задачи благодарение на него.

Има достъпна онлайн документация, предоставена от Oracle, която може да ви помогне да получите директен достъп до базата данни на Oracle, но в тази статия ще демонстрирам как използвам Cx Oracle и няколко други библиотеки на python за автоматизиране на малки ETL задачи от локален компютър към база данни на Oracle.

Целта е да се напише python скрипт, който чете файл в локална папка, извършва почистване и трансформации на данни, след което се вмъква в базата данни на Oracle. След това този скриптов файл на Python може да бъде планиран чрез планировчик на задачи, така че да може да се изпълнява автоматично по зададен график. Ще бъдат добавени допълнителни кодове за регистриране, за да следите какво се случва в рамките на скрипта.

Предпоставка:

Преди да можете да пишете Cx Oracle във вашите скриптове на Python, трябва да инсталирате Oracle Client Libraries, когато ги инсталирате успешно, сте готови да пишете скриптовете си на Python. За да започна скрипта, импортирах тези библиотеки:

import pandas as pd
import cx_Oracle
import math
import logging

Парчета информация за регистър:

Информационните части от кода на регистратора генерират лог файл, който регистрира дали вашият скрипт е изпълнил успешно или не. Тези журнали са полезни, ако скриптовете ще бъдат автоматизирани, така че ще бъдете уведомени за състоянието на командите.

Зареждане и почистване на данни:

Първата функция на python чете файла от сървър или локална папка, почиства и трансформира данните, ако е необходимо, и след това връща желания изходен кадър с данни, който ще се използва за вмъкване в таблица на базата данни на Oracle. Кодът е доста ясен и може да се добави всяка допълнителна команда за трансформиране на набора от данни.

Cx Oracle връзка

Втората функция на python е мястото, където се осъществява връзката с базата данни и командите на Oracle. Първата част от частта изисква подробности за връзката като потребителско име, парола, име на хост, порт и SID, така че python да може да комуникира с Oracle. Втората част е мястото, където командите или задачите се дефинират чрез кратки SQL заявки. Добавих 3 заявки във функцията, Truncate(Изчистване на таблицата, но запазване на схемата на таблицата), Insert (Инжектиране на данни в таблицата) и Предоставяне на достъп (Предоставяне на публичен достъп, така че потребителите да могат да заявяват вашата таблица) — могат да се добавят повече заявки, ако желаете.

Изпълнител на скриптове

Последната част от скрипта на Python за извикване на двете функции. Ако сте забелязали, че logger.info се извиква на повечето редове в целия скрипт, това улеснява проследяването на състоянието на всяка команда.

Този файл със скрипт на Python вече може да се използва като част от партиден файл, който може да бъде качен чрез планировчик на задачи или да се изпълнява чрез команден ред (информацията на регистратора отпечатва известия и чрез cmd).

Ако сте любопитни относно скоростта на импортиране, тествах я върху малък до голям набор от данни. За 1 милион реда код например, скриптът на python отне около 12 минути, за да импортира успешно в моята таблица на Oracle. Това, разбира се, ще варира в зависимост от няколко други фактора на вашата локална машина.

Като цяло този прост скрипт на Python и процесът на автоматизация ще ви помогнат да спестите време за извършване на малки задачи, които отнемат част от времето ви.

Уебсайт: https://www.kathleenlara.com/

Twitter:https://twitter.com/itskathleenlara