首页 > 解决方案 > Python SQL Pandas - 无法将大于 27650 行的数据框导入数据库

问题描述

我正在尝试使用以下代码将大型 csv 文件(500 万行)导入本地 MySQL 数据库:

代码:

import pandas as pd
from sqlalchemy import create_engine


engine = create_engine('mysql+mysqlconnector://[username]:[password]@[host]:[port]/[schema]', echo=False)
    df = pd.read_csv('C:/Users/[user]/Documents/Sales_Records.csv')
    df = df.head(27650)
    df.to_sql(con= engine, name='data', if_exists='replace', chunksize = 50000)

如果我执行此代码,只要 df.head([row limit]) 小于 27650,它就可以工作。但是,只要我将此行限制增加一行,导入就会失败,现在数据会传输到 MySQL . 有谁知道为什么会发生这种情况?

标签: pythonsqlpandas

解决方案


除了本地机器的内存外,Pandas DataFrame 应该没有内存限制。所以我认为这是因为你的机器内存不足。您可以使用memory_profiler,这是一个我喜欢用来检查实时内存使用情况的 Python 库。可以在此处的文档中找到更多信息:https ://pypi.org/project/memory-profiler/

您永远不应该一次性读取大文件,因为它是单点故障而且速度很慢。将数据分块加载到数据库中,就像他们在这篇文章中所做的那样:https ://soprasteriaanalytics.se/2020/10/22/working-with-large-csv-files-in-pandas-create-a-sql -database-by-reading-files-in-chunks/


推荐阅读