擅长:python、mysql、java
<p><strong>更新:确保查看下面的答案,因为Pandas现在内置了对分块加载的支持。</strong></p>
<p>您只需尝试按块读取输入表,然后从各个块组装完整的数据帧,如下所示:</p>
<pre><code>import pandas as pd
import pandas.io.sql as psql
chunk_size = 10000
offset = 0
dfs = []
while True:
sql = "SELECT * FROM MyTable limit %d offset %d order by ID" % (chunk_size,offset)
dfs.append(psql.read_frame(sql, cnxn))
offset += chunk_size
if len(dfs[-1]) < chunk_size:
break
full_df = pd.concat(dfs)
</code></pre>
<p>也可能是整个数据帧太大,无法放入内存,在这种情况下,除了限制所选行或列的数量之外,您没有其他选择。</p>