sql >> データベース >  >> RDS >> PostgreSQL

SQLAlchemyCoreの一括挿入が遅い

    これに答えがないのを見て、私は困惑しました...先日、まったく同じ問題に遭遇しました。COREを使用してPostgresRDSインスタンスに約数百万行を一括挿入しようとしました。 時間かかっていました 。

    回避策として、生のSQL自体を生成する独自の一括挿入スクリプトを作成することになりました。

    bulk_insert_str = []
    for entry in entry_list:
        val_str = "('{}', '{}', ...)".format(entry["column1"], entry["column2"], ...)
        bulk_insert_str.append(val_str)
    
    engine.execute(
        """
        INSERT INTO my_table (column1, column2 ...)
        VALUES {}
        """.format(",".join(bulk_insert_str))
    )
    

    醜いですが、これにより必要なパフォーマンスが得られました(〜500,000行/分)

    COREベースのソリューションを見つけましたか?そうでない場合は、これが役立つことを願っています!

    更新:古いスクリプトを使用していないスペアのEC2インスタンスに移動することになり、パフォーマンスの低下の問題が実際に修正されました。セットアップが何であるかはわかりませんが、外部(AWS以外)接続からRDSと通信する際にネットワークオーバーヘッドがあるようです。



    1. OracleのDECOMPOSE()関数

    2. Oracleに100万行を挿入する最速の方法

    3. PostgreSQLでデフォルトのユーザーパスワードを設定する方法

    4. Dapper-Oracleschema.package.functionを呼び出します