虽然有很多解决方案可以使用 python 将 mysql 表导出到 csv。我想知道这样做的最佳方法?目前我将大约 50 个表存储到 csv 中,这大约需要 47 分钟,并且还需要超过 16gb 的内存。
代码是:
sqlEngine = create_engine(f'mysql+pymysql://{MYSQL_READER_USERNAME}:%s@{MYSQL_READER_HOST}/{MYSQL_DB_NAME}' % urllib.parse.quote(f'{MYSQL_READER_PASSWORD}'), pool_recycle=3600)
def export_table(name, download_location):
table = pd.read_sql(f'select /*+ MAX_EXECUTION_TIME(100000000) */ * from {name}', sqlEngine)
table.to_csv(os.path.join(download_location, name + '.csv'), index=False)
tables = ['table1', ... , 'table50']
for table in tqdm(tables):
print(f'\t => \t Storing {table}')
export_table(table, store_dir)
我已经看到了许多存储到 csv 的方法,例如:
- 使用光标
- 使用 pyodbc 库
- pandas 读取 sql 方法。
有没有其他方法或技术,哪一种最能减少内存或执行时间?