Оптимизируйте способ сравнения данных оракула между двумя таблицами, используя python - PullRequest
0 голосов
/ 18 мая 2019

Для большого набора данных из таблицы оракула, я хочу выполнить сравнение с использованием Python. Кто-нибудь может направить оптимизировать (быстрее) способ сделать это в Python (с помощью модуля cx_oracle)

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

for row in range(dfrow):
    for col in range(dfcol):
        value_old = sorted_t.iloc[row, col]
        value_new = sorted_p.iloc[row, col]
        if value_old != value_new:
            dfdiff.iloc[row, col] = ({} -> {}).format(value_old, value_new)

Я ожидаю более быстрого способа такого сравнения.

1 Ответ

0 голосов
/ 18 мая 2019

Вы заполнили свои рамки данных T и P запросом, подобным

select id, a, b, c
from p;

Похоже, что в T и P есть большое количество строк, и обычно они совпадают. Вы хотели бы быстро пропустить соответствующие строки. Ну, даже не тяните их в память, пусть оракул отфильтрует спички:

select t.id, t.a, t.b, t.c,
       p.id, p.a, p.b, p.c
from   t
join   p on t.id = p.id
where  t.a != p.a
       or t.b != p.b
       or t.c != t.c;

Используйте любое удобное форматирование для отображения отфильтрованных значений.

...