У меня есть текстовый файл объемом 4 ГБ с примерно 12 миллионами строк. Каждая строка представляет собой разделенный по конвейеру (|) список значений поля для объекта. В строке около 20 полей для объекта.
Я вставляю данные в таблицу sqlite с Python, и размер таблицы составляет около 35 ГБ, что нелепо. Так что я делаю не так?
Моя схема таблицы
CREATE TABLE IF NOT EXISTS '{}' (
Entity VARCHAR(255),
FieldName VARCHAR(255),
Value VARCHAR(255),
Code VARCHAR(255),
PermissionID VARCHAR(255),
PRIMARY KEY(Symbol, FieldName, ExchangeCode, PermissionID)
)
Так, например, объект BOB в текстовом файле будет иметь такую строку:
BOB|AX|33|45|23.2|47|65.3|.....|65|2019-10-23|
Обратите внимание, что первые 3 записи: ENTITY|code|PermissionID
И в таблице это будет выглядеть как
ENTITY FieldName Value Code PermissionID
BOB 45 23.3 AX 33
BOB 47 65.3 AX 33
...
BOB 65 2019-10-23 AX 33
Я просто читаю строки и разбиваю их по трубе и вставляю в эту таблицу, и она становится огромной длянекоторая причина. Я знаю, что это много строк, но если текстовый файл 4 ГБ, как таблица может быть почти в 10 раз больше ??