В настоящее время у меня есть большая база данных SQLite (~ 600M строк), представляющая записи телефонных звонков, которые выглядят следующим образом:
ego_id alter_id date tower_id tower_loc
123 456 20200101 98766 California
789 143 20200105 09232 NULL
789 143 20200105 42106 NULL
Значения NULL
в state
представляют идентификаторы вышек с неизвестными местоположениями. Оказывается, что некоторые из этих NULL
значений не должны быть NULL
, потому что у меня есть файл towerloc.txt
(который продолжает расширяться при получении новых данных), который выглядит следующим образом:
tower_id tower_loc
98766 California
09232 New York
, который должен обновить мою таблицу до
ego_id alter_id date tower_id tower_loc
123 456 20200101 98766 California
789 143 20200105 09232 New York
789 143 20200105 42106 NULL
Если база данных была маленькой, я мог бы сделать одно из следующего:
- загрузить базы данных в pandas, объединить, используя
pd.merge(call_record, tower_loc_df, on='tower_id', how='left')
, а затем запись в новую таблицу - запись
towerloc.txt
в виде новой таблицы SQL в том же БД, выполнение предложения SQL join через pd.read_sql(query, engine)
и запись в новую таблицу
но это займет у меня дней . Кроме того, я не могу продолжать делать это каждый раз, когда towerloc.txt
расширяется. Итак, я хочу просто обновить значения NULL
(и только те), объединив их с towerloc.txt
.
Какой самый лучший и быстрый способ сделать это, желательно без путаницы с _ROWID_
(который я использую как быстрый способ подсчета количества строк)?