Importe um arquivo csv de 260GB para o MySQL

5

Eu tenho um csv realmente grande ~ 260GB e quero importá-lo para o MySQL. Eu uso o seguinte script mysql no MacOS

DROP TABLE IF EXISTS tmp_catpath_5;

create table tmp_catpath_5( a1 BIGINT(20),a2 BIGINT(20),a3 BIGINT(20),a4 BIGINT(20),a5 BIGINT(20), c1 BIGINT(20),c2 BIGINT(20),c3 BIGINT(20),c4 BIGINT(20),c5 BIGINT(20), INDEX (a5) );

load data local infile '/Volumes/Time Machine Backups 1/tmp_catpath_5.csv' into table tmp_catpath_5 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' ;

Funciona para arquivos menores, por exemplo 150 GB, mas para este tamanho o banco de dados desaparece imediatamente após o comando load

ERRO 1049 (42000): banco de dados desconhecido

Existe um limite de tamanho do MySQL? É outra coisa? Eu uso o MySQL do aplicativo MAMP (LAMP for MacOS), poderia ser diferente do aplicativo oficial do MySQL?

    
por jimkont 13.12.2010 / 23:37

2 respostas

3

Eu não sei se existem limites para determinados mecanismos de DB, mas encontrei alguns administradores do Departamento de Defesa que gerenciam um sistema MySQL que importa 10 TB todos os dias e eles não estão enfrentando esse tipo de problema.

Em vez de usar macros, recomendo escrever um script para analisar o arquivo de entrada e criar instruções de inserção a partir dele, que podem ser enviadas diretamente para o MySQL. Dessa forma, você não está lidando com o arquivo inteiro em um único hit, apenas uma linha por vez. Eu gosto de usar o Perl para essas coisas.

Você também pode considerar o uso de truncar em vez de soltar a tabela e recriá-la a cada vez.

    
por 14.12.2010 / 00:41
1

Embora isso não responda à sua pergunta, a possibilidade de dividir o arquivo em partes menores é algo que você considerou? O utilitário unix "split" pode lidar com isso facilmente.

Quando você diz "travamentos", você quer dizer o cliente MySQL ou o servidor? Algum erro é exibido?

    
por 13.12.2010 / 23:55