だから私は146のカラムとおよそのテーブルを持っています。 PostgreSQLにローカルに保存されたスパースデータの8ミルの行。Psycopg - PostgreSQLから大規模なデータセットを選択するとメモリエラーが発生する
私の目標は、データセット全体を一度に選択し、それをパンダのデータフレームに保存して計算を実行することです。
これまでのところ、私は多くのスレッドでサーバー側のカーソルについて読んだことがありますが、私はメモリの改善が見られないので、何か間違っていると思います。ドキュメントもかなり限られている...これまで
私のコードは次のようである:
cur=conn.cursor('testCursor')
cur.itersize = 100000
cur.execute("select * from events")
df = cur.fetchall()
df = pd.DataFrame(df)
conn.commit()
conn.close()
は私も代わりはfetchAllのfetchmany()またはfetchoneを()()を使用してみましたが、私は知りませんか結果をスクロールします。私は結果をCONCATする方法fetchmany()fetchoneの場合
df = cur.fetchone()
while row:
row = cur.fetchone()
最後に、()と:私は(私はfetchoneのために、このようなものを使用することができると思います)が、私はfetchmanyを処理する方法がわかりません()私の記憶をすべて消費することなく単一のデータフレームに変換できますか?私は利用可能なRAMが16GBであることに注意してください。
あなたの問題へのアプローチは、柱状のDB(MonetDBなど)に日付テーブル全体をコピーし、クエリ内のコードを含むPythonで分析を実行することです。 MonetDBでは、Pythonコードをクエリに埋め込むことができます。これは組み込み機能です。ここでの例ref:https://www.monetdb.org/blog/voter-classification-using-monetdbpython これはあなたにとって役に立ちます。 –
ありがとうございます! Postgresで解決策が見つからない場合は、試してみてください – lacrima