14

大きな csv ファイルから sqlite3 データベースにデータを移行したいと考えています。

パンダを使用した Python 3.5 の私のコード:

con = sqlite3.connect(DB_FILENAME)
df = pd.read_csv(MLS_FULLPATH)
df.to_sql(con=con, name="MLS", if_exists="replace", index=False)

to_sql メソッドの現在の実行状況 (進行状況バー) を出力することはできますか?

tqdmに関する記事を見ましたが、これを行う方法が見つかりませんでした。

4

3 に答える 3

7

miraculixx によって投稿されたソリューションのバリアントを共有したかった-SQLAlchemy 用に変更する必要があった:

#these need to be customized - myDataFrame, myDBEngine, myDBTable

df=myDataFrame

def chunker(seq, size):
    return (seq[pos:pos + size] for pos in range(0, len(seq), size))

def insert_with_progress(df):
    con = myDBEngine.connect()
    chunksize = int(len(df) / 10)
    with tqdm(total=len(df)) as pbar:
        for i, cdf in enumerate(chunker(df, chunksize)):
            replace = "replace" if i == 0 else "append"
            cdf.to_sql(name="myDBTable", con=conn, if_exists="append", index=False) 
            pbar.update(chunksize)
            tqdm._instances.clear()

insert_with_progress(df)
于 2019-11-04T18:03:40.763 に答える