
Eu tenho um conjunto de dados bastante grande que preciso importar para o MySQL. Gostaria de fazer isso da maneira mais eficiente possível, pois precisarei fazer isso repetidamente. Existem truques para isso? Existe alguma maneira que seja mais eficiente que as instruções INSERT estendidas?
Para responder às dúvidas do comentário, o formato original está em XML, embora já tenha um transformador para colocá-lo no formato CSV. Estou trabalhando com MySQL 5.1.xe o banco de dados de destino é InnoDB. Existem relacionamentos entre os dados, mas não tenho nenhuma restrição e, na maioria dos casos, os dados não são limpos o suficiente para impô-los.
Responder1
Tentarimportação mysqlvocê pode importar diretamente de arquivos CSV.
Responder2
eu leria omysqlmanual, eu estava pensando em INSERT AFTER , mas LOAD DATA INFILE parece interessante "20 vezes mais rápido"...
Responder3
Existe uma ferramenta ETL de código aberto chamadaIntegração de dados Pentahoque possui uma opção de carregamento em massa do mysql (na pasta experimental na visualização Design). Você também pode carregar dados rapidamente de maneira independente de plataforma usando as etapas de entrada CSV e saída de tabela. Se precisar fazer algum processamento nos dados antes de carregá-los, você pode codificar essa lógica neste programa.
Responder4
Mesmo uma "inserção ..." em massa não deve demorar muito. Peguei uma nova exportação de banco de dados JIRA de 200 MB e carreguei em um banco de dados virgem em aproximadamente 30 segundos.