python - 如何在 Python Pandas 中查询和导出大数据集
问题描述
我在 Amazon RDS 中有 SQL Server 数据库表,并且在 AWS EC2 中的 8 GB 服务器上运行 python 脚本。python 代码简单地选择一个大表中的所有数据并尝试将其转换为 EC2。即使我尝试每年提取数据,EC2 实例也会很快耗尽内存,但是我希望将所有数据提取到 csv 中(我不一定需要使用 Pandas)
截至目前,熊猫数据框代码非常简单
query= 'select * from table_name'
df = pd.read_sql(query,cnxn)
df.to_csv(target_name, index=False)
我看到的错误是
Traceback(最近一次调用最后一次):df = pd.read_sql(query,cnxn)
MemoryError
解决方案
您将希望在此处使用 SQL 数据库的本机管理工具而不是 Python/Pandas。
- 如果是 MySQL 数据库,
mysql ... --batch --execute='select * from table_name' > my-file.csv
- 如果它是一个 PostgreSQL 数据库,在里面
psql
做类似的事情
\copy (select * from table_name) To './my-file.csv' With CSV
- 如果是 SQL Server,(通过这里)
sqlcmd -S MyServer -d myDB -E -Q "select * from table_name" -o "my-file.csv" -h-1 -s"," -w 700
但是,如果您确实想使用 Pandas,则可能可以摆脱该chunksize
参数(如果内存不足,请进行相应调整):
with open('my_csv.csv', 'w') as f:
for i, partial_df in enumerate(pd.read_sql(query, cnxn, chunksize=100000)):
print('Writing chunk %s' % i)
partial_df.to_csv(f, index=False, header=(i == 0))
推荐阅读
- mysql - SQL 错误代码 1055。按组标记的最小日期
- android - 检测到 NFC 标签时显示 toast 消息
- image - 如何为从多边形中获得的蒙版图像着色
- python-3.x - 将 CV2 灰度应用于 Numpy 4D 数组
- python - 树莓派自动启动 python && chromium kioskmode
- html - 当我使用引导程序时,我的导航栏项目会以蓝色突出显示并加下划线。为什么?
- javascript - TypeScript - 如何计算包装对象?
- c++ - 现有文件和正确路径出现“无法打开源文件”错误
- android - 解决“尝试调用接口方法java.lang.String com.facebook.react.bridge.ReadableMap.getString(java.lang.String)”
- vba - 解锁时在受保护的宏上显示密码