У меня есть большие наборы данных в s3. В своей работе по склеиванию Python я буду извлекать данные из этих файлов в форме фрейма данных pandas, применять необходимые преобразования к фрейму данных, а затем загружать его в базу данных Microsoft SQL с помощью библиотеки PYMSSQL. Окончательный кадр данных содержит в среднем 100–200 тыс. строк и 180 столбцов данных. В настоящее время я использую PYMSSQL для подключения к базе данных. Проблема в том, что выполнение многих классов курсоров требует слишком много времени для загрузки данных. Примерно 20 минут для 100 тысяч строк. Я проверил логи, и загрузка всегда была медленной. скриншот прилагается. Как их загрузить быстрее? Я прилагаю свой код здесь:
file=s3.get_object(Bucket=S3_BUCKET_NAME,Key=each_file)
for chunk in pd.read_csv(file['Body'],sep=",",header=None,low_memory=False,chunksize=100000):
all_data.append(chunk)
data_frame = pd.concat(all_data, axis= 0)
all_data.clear()
cols = data_frame.select_dtypes(object).columns
data_frame[cols] = data_frame[cols].apply(lambda x: x.str.strip())
data_frame.replace(to_replace ='',value =np.nan,inplace=True)
data_frame.fillna(value=np.nan, inplace=True)
data_frame.insert(0,'New-column', 1111)
sql_data_array =data_frame.replace({np.nan:None}).to_numpy()
sql_data_tuple=tuple(map(tuple, sql_data_array))
try:
sql="insert into [db].[schema].[table](column_names)values(%d,%s,%s,%s,%s,%s...)"
db_cursor.executemany(sql,sql_data_tuple)
print("loading completed on {}".format(datetime.datetime.now()))
except Exception as e:
print(e)
Подробнее здесь: https://stackoverflow.com/questions/727 ... -shell-job
Как выполнить массовую вставку данных в базу данных MSSQL в задании оболочки Python AWS Glue? ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение