PostgreSQL DBのシンプルなテーブルに膨大な数のエントリ(〜600k)をアップロードしたいのですが、各エントリごとに1つの外部キー、タイムスタンプ、3つのフロートがあります。しかし、hereと記述されているコア一括挿入を実行するには、各エントリごとに60ミリ秒かかるので、実行には10時間かかります。私はexecutemany()
メソッドのパフォーマンス上の問題であることを知りましたが、execute_values()
メソッドでpsycopg2 2.7に解決されています。sqlalchemyでpsycopg2.extrasを使用するにはどうすればよいですか?
私は実行するコードは以下の通りです:
#build a huge list of dicts, one dict for each entry
engine.execute(SimpleTable.__table__.insert(),
values) # around 600k dicts in a list
私はしかし、私はSQLAlchemyの自分自身で解決策を見つけるために管理していない、それは共通の問題であることがわかります。 sqlalchemyに何らかの機会にexecute_values()
を呼び出すよう指示する方法はありますか?自分でSQL文を作成せずに巨大な挿入を実装する方法はありますか?
ありがとうございました!
私は 'SimpleTable .__ table __。insert()。values(values)'を使って、複数のVALUESタプルを持つ単一のINSERT文にコンパイルすることを提案しようとしていましたが、実際には、 。コンパイル自体は、 'executemany()'に依存するあなたのメソッドを使うのと同じくらい遅かったです。 –