No postgres, podemos fazer COPY para exportar os dados para o arquivo. Mas todos os dados serão salvos em um arquivo. Mas eu quero dividir esse arquivo em arquivos pequenos. Podemos fazer isso após a exportação.
Mas existe uma maneira de exportá-lo durante o processo de CÓPIA?
OU em psycopg2 podemos fazer isso?
Você pode usar uma
WHERE
condição:Aqui
id
significa qualquer coluna numérica. Você também pode usar outros tipos de dados e dividir os dados de outras maneiras com umaWHERE
condição apropriada.O streaming dos dados COPY em um programa é suportado por meio da
PROGRAM
cláusula.O comando Unix
split
pode fazer a divisão real. Por exemplo:Isso dividirá a saída em arquivos numerados sequencialmente que não excedam 10.000 linhas cada.
A
PROGRAM
cláusula também é suportada pelo psql\copy
; nesse caso, o programa é executado do lado do cliente.Advertência: se o formato de exportação for CSV e houver campos de texto de várias linhas, há o risco de dividir um campo em vários arquivos.
Se você já tem um arquivo grande e tem espaço em disco suficiente, pode usar o método abaixo.
Suponha que você tenha criado um arquivo grande com o comando copy;
Divida os arquivos em partes (somente Linux);