Мне нужно выбрать все строки из нескольких таблиц и сохранить их в отдельных файлах CSV.
Я уже использую multiprocessing.Pool , чтобы создать отдельный процесс для каждой таблицы.Но таблицы довольно большие (по 2000000 строк), и выборка всех из них занимает время.
import psycopg2
from multiprocessing import Pool
def pg_to_csv(table_name):
conn = psycopg2.connect(PG_DEV_CONFIG)
cur = conn.cursor()
query = f"""
SELECT * FROM public.{table_name}
"""
output_query = "COPY ({0}) TO STDOUT WITH CSV HEADER".format(query)
with open(table_name+'.csv', 'w') as output_csv:
cur.copy_expert(output_query, output_csv)
output_csv.close()
conn.close()
return
if __name__ == '__main__':
args = ['table1', 'table2','table3','table4']
p = Pool(4)
p.map(pg_to_csv, args)
Каковы наилучшие практики в подобных случаях?Как ускорить процесс?