Скрипт работает с меньшим тестовым CSV, но когда я пытаюсь запустить его с «настоящим» CSV в моем наборе данных, процесс Python продолжает накапливать память до тех пор, пока не произойдет сбой.
Я тестировал его как на Windows, так и на macOS, первый компьютер имеет 64 ГБ ОЗУ, а второй — 32 ГБ, поэтому я почти уверен, что это не аппаратная проблема.
Независимо от количества поисков, которые я выполнял в Интернете, кажется, ничто не решает мою проблему. Установка low_memory в значение true, Collect(engine='streaming') или использование раковины_csv тоже не сработали.
Вот мой код:
Код: Выделить всё
import polars as pl
from sqlalchemy import create_engine
result = (
pl.scan_csv("/path/to/file/201601.csv",
separator="|",
encoding='utf8-lossy',
try_parse_dates=True
)
#selecting specific columns
.select(
["ProgramClassID", "NetworkAffiliationID", "LogServiceID", "LogEntryDate","StartTime", "EndTime","Duration", "ProgramTitle", "Subtitle"]
)
#Filtering out all other broadcasters than SRC/3680
.filter(
pl.col("LogServiceID") != 3680)
#sorting by date
.sort(
"LogEntryDate")
#collecting to dataframe
.collect()
)
#defining login details for db
uri='postgresql://postgres:pwd@0.0.0.0:5432/crtc_program_logs'
#writing to db
result.write_database(table_name="polars_test_02",
connection=uri,
if_table_exists="replace"
)