パンダをスピードアップする方法to_sql

デビッドエクルズ

パンダto_sqlを使用してMSAzure Sqlデータベースにデータをアップロードしようとしていますが、非常に時間がかかります。私はよく寝る前にそれを実行して朝起きる必要があります、そしてそれは終わりました、しかし数時間かかりました、そして起こるエラーがあるならば私はそれに対処することができません。これが私が持っているコードです:

params = urllib.parse.quote_plus(
'Driver=%s;' % driver +
'Server=%s,1433;' % server +
'Database=%s;' % database +
'Uid=%s;' % username +
'Pwd={%s};' % password +
'Encrypt=yes;' +
'TrustServerCertificate=no;'
)

conn_str = 'mssql+pyodbc:///?odbc_connect=' + params
engine = create_engine(conn_str)

@event.listens_for(engine, 'before_cursor_execute')
def receive_before_cursor_execute(conn, cursor, statement, params, context, executemany):
    if executemany:
        cursor.fast_executemany = True
        cursor.commit()
        
connection = engine.connect()
connection

次に、SQLインジェクションに対して次のコマンドを実行します。

master_data.to_sql('table_name', engine, chunksize=500, if_exists='append', method='multi',index=False)

チャンクサイズを試してみましたが、スイートスポットは100のようです。これは、通常一度に800,000〜2,000,000のレコードをアップロードしようとしていることを考えると、十分な速度ではありません。それを超えて増やすと、チャンクサイズにのみ関連しているように見えるエラーが発生します。

OperationalError: (pyodbc.OperationalError) ('08S01', '[08S01] [Microsoft][ODBC Driver 17 for SQL Server]Communication link failure (0) (SQLExecDirectW)')
Mike Ubezzi MSFT

問題が解決したかどうかはわかりませんが、Python固有の情報用のAzure SQLデータベースライブラリと、必要に応じてこの問題を調査および解決するためのいくつかの有用なリソースを提供するために、ここで回答を提供したいと考えました

を使用pyodbcしてAzureSQLデータベースに直接クエリを実行する例クイックスタート:Pythonを使用してAzureSQLデータベースのシングルインスタンスとマネージドインスタンスにクエリを実行する

Pandasデータフレームの使用例:PandasデータフレームからAzureSQLデータベースの読み取りと書き込みを行う方法

main.py

"""Read write to Azure SQL database from pandas"""
import pyodbc
import pandas as pd
import numpy as np
from sqlalchemy import create_engine

# 1. Constants
AZUREUID = 'myuserid'                                    # Azure SQL database userid
AZUREPWD = '************'                                # Azure SQL database password
AZURESRV = 'shareddatabaseserver.database.windows.net'   # Azure SQL database server name (fully qualified)
AZUREDB = 'Pandas'                                      # Azure SQL database name (if it does not exit, pandas will create it)
TABLE = 'DataTable'                                      # Azure SQL database table name
DRIVER = 'ODBC Driver 13 for SQL Server'                 # ODBC Driver

def main():
"""Main function"""

# 2. Build a connectionstring
connectionstring = 'mssql+pyodbc://{uid}:{password}@{server}:1433/{database}?driver={driver}'.format(
    uid=AZUREUID,
    password=AZUREPWD,
    server=AZURESRV,
    database=AZUREDB,
    driver=DRIVER.replace(' ', '+'))

# 3. Read dummydata into dataframe 
df = pd.read_csv('./data/data.csv')

# 4. Create SQL Alchemy engine and write data to SQL
engn = create_engine(connectionstring)
df.to_sql(TABLE, engn, if_exists='append')

# 5. Read data from SQL into dataframe
query = 'SELECT * FROM {table}'.format(table=TABLE)
dfsql = pd.read_sql(query, engn)

print(dfsql.head())


if __name__ == "__main__":
    main()

そして最後に、次のリソースは、パフォーマンスの問題がある特定の実装を、スタックオーバーフロースレッドが最適なリソースである可能性が高い以下の情報と比較するのに役立ちますが、監視とパフォーマンスのチューニングドキュメントは、サーバー側のパフォーマンスの問題を調査して軽減するのに役立ちます、など。

AzureSQLデータベースとAzureSQL マネージドインスタンスでのpyODBCモニタリングとパフォーマンスチューニングのfast_executemanyを使用してpandas.DataFrame.to_sqlを高速化する

よろしく、マイク

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

パンダでリサンプル手順をスピードアップする方法は?

分類Dev

パンダシリーズのランク機能をスピードアップする方法は?

分類Dev

カウントダウンをスピードアップする方法は?

分類Dev

パンダのcummin / cummaxをスピードアップ

分類Dev

パンダの操作をスピードアップ

分類Dev

SQLAlchemyを使用してパンダto_sqlにテーブルをドロップすることはできません

分類Dev

巨大なファイルからパンダのデータフレームの作成をスピードアップする方法は?

分類Dev

Androidスピナードロップダウンの最初のアイテムを非表示にする方法は?

分類Dev

スピナードロップダウン値を整数に変換する方法

分類Dev

Scalaアダプターパターン-同じメソッドを持つクラスの「ダックタイピング」を自動的に許可する

分類Dev

パンダのペアワイズ作成をスピードアップ

分類Dev

パンダはリストの列からの列の作成をスピードアップします

分類Dev

パンダの可能なスピードアップが適用されます

分類Dev

スクレイピーをスピードアップする方法

分類Dev

webpack開発をスピードアップする方法

分類Dev

Kritaをスピードアップする方法は?

分類Dev

パンダto_sql()インデックスを挿入

分類Dev

パンダto_sql()インデックスを挿入

分類Dev

ピジンをアップグレードする方法

分類Dev

各行の乗算用のパンダ-スピードアップ

分類Dev

Android:スピナーポップアップは機能していませんが、ドロップダウンとして機能しています。このドロップダウンをポップアップに変更する方法

分類Dev

centOSでjetbrainsアップソースをダウンロードする方法は?

分類Dev

ツールバーのスピナードロップダウンアイコンを変更する

分類Dev

スクレイピー:スパイダーでアイテムを使用する方法とパイプラインにアイテムを送信する方法?

分類Dev

Angularビルドプロセスをスピードアップする方法

分類Dev

Angularビルドプロセスをスピードアップする方法

分類Dev

Androidでカスタムスピナーツールバードロップダウンを作成する方法

分類Dev

メールアドレスをスパンタグでラップする方法

分類Dev

仮想ボックスアダプタではなく、コンピュータのIPアドレスを取得する方法

Related 関連記事

  1. 1

    パンダでリサンプル手順をスピードアップする方法は?

  2. 2

    パンダシリーズのランク機能をスピードアップする方法は?

  3. 3

    カウントダウンをスピードアップする方法は?

  4. 4

    パンダのcummin / cummaxをスピードアップ

  5. 5

    パンダの操作をスピードアップ

  6. 6

    SQLAlchemyを使用してパンダto_sqlにテーブルをドロップすることはできません

  7. 7

    巨大なファイルからパンダのデータフレームの作成をスピードアップする方法は?

  8. 8

    Androidスピナードロップダウンの最初のアイテムを非表示にする方法は?

  9. 9

    スピナードロップダウン値を整数に変換する方法

  10. 10

    Scalaアダプターパターン-同じメソッドを持つクラスの「ダックタイピング」を自動的に許可する

  11. 11

    パンダのペアワイズ作成をスピードアップ

  12. 12

    パンダはリストの列からの列の作成をスピードアップします

  13. 13

    パンダの可能なスピードアップが適用されます

  14. 14

    スクレイピーをスピードアップする方法

  15. 15

    webpack開発をスピードアップする方法

  16. 16

    Kritaをスピードアップする方法は?

  17. 17

    パンダto_sql()インデックスを挿入

  18. 18

    パンダto_sql()インデックスを挿入

  19. 19

    ピジンをアップグレードする方法

  20. 20

    各行の乗算用のパンダ-スピードアップ

  21. 21

    Android:スピナーポップアップは機能していませんが、ドロップダウンとして機能しています。このドロップダウンをポップアップに変更する方法

  22. 22

    centOSでjetbrainsアップソースをダウンロードする方法は?

  23. 23

    ツールバーのスピナードロップダウンアイコンを変更する

  24. 24

    スクレイピー:スパイダーでアイテムを使用する方法とパイプラインにアイテムを送信する方法?

  25. 25

    Angularビルドプロセスをスピードアップする方法

  26. 26

    Angularビルドプロセスをスピードアップする方法

  27. 27

    Androidでカスタムスピナーツールバードロップダウンを作成する方法

  28. 28

    メールアドレスをスパンタグでラップする方法

  29. 29

    仮想ボックスアダプタではなく、コンピュータのIPアドレスを取得する方法

ホットタグ

アーカイブ