замена NULL в sqlite значением из другой таблицы с помощью pandas слияния или SQL запроса JOIN - PullRequest
0 голосов
/ 05 февраля 2020

В настоящее время у меня есть большая база данных 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_ (который я использую как быстрый способ подсчета количества строк)?

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