Как проверить количество строк, которые я вставил в таблицу, пока вставка еще продолжается - PullRequest
0 голосов
/ 13 января 2020

У меня есть датафрейм с 4 миллионами строк и 53 столбцами. Я пытаюсь записать фрейм данных в таблицу oracle. ниже приведен фрагмент моего кода на python:

import pandas as pd
import cx_Oracle
conn = (--------------)
df = pd.read_sql(------)

#write to oracle table
df.to_sql(---)

Этот код работает уже более трех дней, и конца ему не видно. Пожалуйста, как я могу получить прогресс вставки?

PS: Мое соединение работает хорошо, и я уже подтвердил, что "to_ sql ()" работает, потому что я попробовал его на фрейме данных с 10 строками и это сработало.

Отредактировано : Спасибо всем, эта ссылка помогла. Сделал явное преобразование str и мой код был выполнен за 26 минут!

1 Ответ

0 голосов
/ 13 января 2020

Вы можете проверить, выполняется ли вставка или она все еще является шагом pd.read_ sql, если на вашей целевой таблице есть блокировка таблицы. Если повезет, вы все еще загружаете данные из базы данных. Здесь вы должны проверить, быстрее ли использовать технологию pu sh down. Извлечение всех данных из базы данных для их вставки может иногда быть медленным.

Проверка сессий не поможет, потому что вы, вероятно, вставляете строки 1 на 1 ... Я не знаю, был ли заполнен какой-либо из отмененных или окончательных сегментов для таблицы во время вставки. Но кажется, что ваша база данных oracle довольно большая, поэтому, возможно, кто-то может вам помочь.

В следующий раз вы должны использовать некоторые дополнительные параметры при выполнении такой большой операции.

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_sql.html#pandas .read_ sql

-> Чтение путем перебора данных ... чтение всего 4 ГБ Данные должны быть возможны, но разделение на части будет будь быстрее

think of using parameter chunksize 

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_sql.html#pandas .DataFrame.to_ sql

Как написано @lekz, используйте chunksize, но при выполнении большого количества вставок вы также должны

think of using parameter method ('multi' or callable) + chunk size

это также должно увеличить скорость.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...