Я должен массово импортировать кучу файлов, которые в сумме составляют примерно 1 ТБ. Каждый файл занимает примерно 150 МБ.
Мне нужно импортировать все файлы в базу данных PostgreSQL с помощью python.
Это мое решение, есть ли лучшие способы сделать это?
import csv
import psycopg2
import os
from multiprocessing.pool import ThreadPool as Pool
conn = psycopg2.connect(
host="localhost",
database="database",
user="user",
password="password",
port="5432"
)
cur = conn.cursor()
def searchFiles(directory='.', extension=''):
filelist = []
extension = extension.lower()
for dirpath, dirnames, files in os.walk(directory):
for name in files:
if extension and name.lower().endswith(extension):
filelist.append(os.path.join(dirpath, name))
elif not extension:
print(os.path.join(dirpath, name))
return filelist
def importData(file):
with open(file, 'r') as f:
reader = csv.reader(f, delimiter=":")
for row in reader:
print(row)
cur.execute("INSERT INTO database VALUES (%s, %s)", row)
conn.commit()
fileList = searchFiles('.', '.txt')
threadPool = Pool(processes=8)
for file in fileList:
threadPool.map(importData, (file,))
Спасибо за любые предложения!