Dividir um arquivo, cada arquivo de divisão tem 1 ou mais valores agrupados, mas garantir que o grupo de registros não esteja espalhado em vários arquivos divididos?

0

Eu tenho um requisito onde eu tenho um arquivo FILE.csv original que pode ter um tamanho maior que 200 MB. Eu quero dividir esse grande arquivo em vários arquivos com base em uma determinada contagem máxima de arquivos (para garantir que cada arquivo não tenha mais de 50 MB). E eu quero conseguir isso dando contagem máxima de registros de arquivos .

Se eu der max_file_count = 10000, um arquivo de 100000 deve ser dividido em 10 arquivos diferentes. Mas há um desafio aqui.

Quando eu dividir o arquivo, quero ter certeza de que um grupo de registros tem o mesmo valor na coluna 1 deve permanecer no mesmo arquivo dividido. Por favor, note que, um determinado arquivo de divisão pode ter mais de um grupo também.

Exemplo

Para o exemplo de amostra abaixo, se eu der max_file_count = 7, então meu arquivo original (que tem 15 registros no total) deve ser dividido em 3 arquivos. APENAS a condição é que cada arquivo de divisão pode ter 1 ou mais de 1 grupo de registros com o mesmo valor de coluna 1, mas nenhum dos registros com o mesmo valor de coluna 1 deve ser dividido em vários arquivos.

dados do arquivo original: FILE.csv

A,1,2,6/11/2018,X,Y,Z     
A,2,2,6/11/2018,X,Y,B     
A,3,2,6/11/2018,X,Y,Z    
A,4,2,6/12/2018,X,Y,Z     
B,1,2,6/11/2018,X,Y,Z     
B,2,2,6/11/2018,X,Y,B     
A,5,2,6/15/2018,X,C,Z     
A,6,3,6/110/2018,A,Y,Z    
C,3,2,6/11/2018,X,Y,Z    
C,4,2,6/12/2018,X,Y,Z    
C,5,2,6/15/2018,X,C,Z    
D,6,3,6/110/2018,A,Y,Z    
E,6,3,6/110/2018,A,Y,Z    
E,6,3,6/110/2018,A,Y,Z    
G,6,3,6/110/2018,A,Y,Z

Arquivos de saída de amostra:

File_1.csv: can have all **A**'s (6 rows) + all **G**'s (1 row)    
File_2.csv: can have all B's (2 rows), C's(3 rows), D's (1 row).    
File_3.csv: can have all E's (2 rows).

NOTA: Meu arquivo pode ter qualquer número de valores de grupo diferentes na coluna-1.

    
por cmaroju 16.07.2018 / 19:04

0 respostas

Tags