pdw, se você utiliza alguma distribuição Linux, caso possa, veja se o comando seguinte apresenta erro de esgotamento de memória. Se seu propósito é apenas dividir o bigfile em arquivos menores para poder acessá-lo por partes mais facilmente, fica a dica!
![WARNING]
Devido o comando criar muitos arquivos no diretório, dependendo dos parâmetros que você definir, só o execute após realmente saber como ele funciona, se há espaço em disco suficiente etc..
![WARNING]
split --lines=10000000 --unbuffered arquivo.csv
ou
split --lines=10000000 arquivo.csv
Supondo que seu arquivo CSV contém muitas linhas e cada registro é uma delas (com todas as suas colunas), ao executar o comando split
acima, serão criados vários arquivos menores (xaa, xab, xac, etc. ou segundo a máscara que você deve definir), todos contendo apenas 10.000.000 linhas ou o número de linhas que você definir no lugar do 10000000. O último arquivo gerado poderá ter um pouco menos caso o número de linhas não seja múltiplo do parâmetro (10000000).
Qualquer dúvida sobre o comando split
, digite no terminal man split
. Costumo utilizar esse comando split
para arquivos binários e hoje vi que é possível separar por linhas quando se trata de um arquivo texto.
PS: Existe outra alternativa utilizando o comando dd
, mas se trata de uma extração mais bruta.