December 29, 2023

Как при помощи Python читать таблицу из MS SQL с помощью chunksize

Как при помощи Python читать таблицу из MS SQL состоящую из 20 миллионов строк данных не полностью за один запрос, а с помощью chunksize и писать output в один файл parquet.

Для выполнения этой задачи вы можете использовать библиотеки pandas для работы с данными и pyodbc для подключения к базе данных MS SQL. Вот пример кода, который демонстрирует, как это можно сделать:

Установите необходимые библиотеки:

pip install pandas pyodbc pyarrow

Импортируйте библиотеки в вашем скрипте:

import pandas as pd
import pyodbc

Установите параметры подключения к вашей базе данных MS SQL:

server = 'your_server_name'
database = 'your_database_name'
username = 'your_username'
password = 'your_password'

Установите параметры запроса:

table_name = 'your_table_name'
chunksize = 10000  # Размер блока (chunk) для пошагового чтения данных

Создайте подключение к базе данных и используйте pd.read_sql с параметром chunksize для пошагового чтения данных:

connection_string = f'DRIVER={{SQL Server}};SERVER={server};DATABASE={database};UID={username};PWD={password}'
conn = pyodbc.connect(connection_string)

query = f'SELECT * FROM {table_name}'
chunks = pd.read_sql(query, conn, chunksize=chunksize)

Используйте цикл для пошаговой обработки и записи данных в файл parquet:

output_filename = 'output.parquet'

for i, chunk in enumerate(chunks):
    if i == 0:
        chunk.to_parquet(output_filename, index=False, engine='pyarrow')
    else:
        chunk.to_parquet(output_filename, index=False, engine='pyarrow', mode='a')