Estou carregando alguns dados em meu banco de dados postgres usando um script python. Esses dados estão todos em arquivos CSV enormes, então eu os leio preguiçosamente e chamo instruções INSERT em lotes de dados. No entanto, esses dados estão todos "conectados" de alguma forma, por isso é bom manter todo o pipeline de carregamento de dados como uma única transação, para que, se alguma parte dele falhar, tudo possa ser revertido.
Minha pergunta é: estou me esforçando para manter esses enormes arquivos csv fora da memória em meu script python, mas, como todo o carregamento de dados é uma única transação, todos os dados acabam na memória no lado do postgres das coisas? Uma única transação INSERT precisa acomodar todos os seus dados inteiramente na memória?