Как лучше всего использовать Python в качестве инструмента ETL, когда пакет служб SSIS не может быть развернут? Есть 8 SQL запросов, которые являются довольно сложными, которые нужно выполнять ежедневно, и их результаты сохраняются в виде csv-файлов в определенной папке c.
Я нашел пару возможных решений здесь:
Автоматическое планирование SQL результатов запроса для экспорта в файл CSV
Как автоматически сохранить sql результаты запроса в файл .csv
Подключение к связанному серверу через SQL Сервер pyodb c подключение?
Первые 2 решения требуют либо пакета служб SSIS, SQL Agent Job, либо утилиты bcp. В идеале я хотел бы перейти к Python, как в третьем варианте, поскольку это позволило бы мне интегрировать код ETL в мой текущий рабочий процесс. Это также позволило бы мне больше узнать о возможностях ETL Python.
Прямо сейчас у меня есть 8. sql файлов, которые я выполняю каждый день, и я хотел бы перейти к PyODB C установить sh соединение с базой данных SQL и ее таблицами. Каждый запрос содержит около 300 строк кода, и он выбирает данные из базы данных, а также из баз данных на связанном сервере.
Это то, что у меня есть в Python:
import pyodbc
import pandas as pd
import os
import sys
# Establish connection to the SQL database and appropriate table
conn = pyodbc.connect('Driver={'+driver+'};'
'Server='+server+';'
'Database='+database+';'
'Trusted_Connection=yes;')
path = 'C:\\User\\Me\\path\\'
# Define the query you'd like to execute:
query = open(path + 'Dynamic Query - Import Data 02_27_20.sql', 'r')
# For some reason this line of code times out and gives me an error message
df = pd.read_sql_query(query.read(), conn)
df.to_csv(output_folder + filename, index = False)
Ошибка, которую я имею здесь, когда я пытаюсь выполнить файл. sql в Python. После запуска этой строки кода время ожидания истекает, и я получаю следующую ошибку: «TypeError: объект« NoneType »не повторяется».
Если я могу выполнить запрос в Python и сохраняя результаты в виде фрейма данных, я могу затем экспортировать этот фрейм данных в виде CSV-файла в нужное место.
Любая помощь будет принята с благодарностью. Спасибо!