Tente mysqlimport você pode importar diretamente de arquivos CSV.
Eu tenho um conjunto de dados bastante grande que eu preciso importar para o MySQL. Eu gostaria de fazer o mais eficientemente possível, pois vou precisar fazer isso repetidamente. Existem truques para isso? Existe alguma maneira que é mais eficiente do que instruções INSERT estendidas?
Para resolver as questões no comentário, o formato original está em XML, embora eu já tenha um transformador para colocá-lo no formato CSV. Estou trabalhando com o MySQL 5.1.xe o banco de dados de destino é o InnoDB. Existem relações entre os dados, mas não tenho restrições e os dados não são limpos o suficiente na maioria dos casos para impor-lhes.
Tente mysqlimport você pode importar diretamente de arquivos CSV.
Eu leria o manual mysql , estava pensando em INSERT AFTER , mas LOAD DATA INFILE parece interessante "20 vezes mais rápido" ....
Há uma ferramenta ETL de código aberto chamada Pentaho Data Integration que possui uma opção de carregamento em massa mysql (sob a pasta experimental no modo Design ). Você também pode carregar rapidamente os dados de maneira independente da plataforma, usando as etapas CSV Input e Table Output. Se você precisar fazer algum processamento nos dados antes de carregá-los, poderá codificar essa lógica dentro deste programa.
Use /*!40000 ALTER TABLE tbl_name DISABLE KEYS */;
e /*!40000 ALTER TABLE tbl_name ENABLE KEYS */;
em torno das instruções INSERT para cada tabela.
Isso garantirá que índices não exclusivos sejam criados depois que todas as linhas estiverem presentes, em vez de tentar construí-las peça por peça.
Mesmo um "insert ..." em massa não deve demorar muito. Eu peguei uma nova exportação de banco de dados do JIRA de 200MB e carreguei em um banco de dados virgem em aproximadamente 30 segundos.
Tags mysql database bulk-action