Como faço para dividir um grande arquivo de backup do MySql em vários arquivos?

9

Eu tenho um arquivo SQL de backup de 250 MB, mas o limite para a nova hospedagem é de apenas 100 MB ...

Existe um programa que permite dividir um arquivo SQL em vários arquivos SQL?

Parece que as pessoas estão respondendo a pergunta errada ... então vou esclarecer mais:

Eu tenho apenas o arquivo de 250 MB e só tenho a nova hospedagem usando o phpMyAdmin que atualmente não tem dados no banco de dados. Eu preciso pegar o arquivo de 250 MB e enviá-lo para o novo host, mas há um limite de tamanho de upload de arquivo de backup SQL de 100 MB. Eu simplesmente preciso pegar um arquivo que é muito grande e dividi-lo em vários arquivos, cada um contendo apenas instruções SQL completas válidas (nenhuma instrução pode ser dividida entre dois arquivos).

    
por Brian T Hannan 01.10.2010 / 17:50

9 respostas

5

De Como dividir a saída do mysqldump em arquivos menores?

First dump the schema (it surely fits in 2Mb, no?)

mysqldump -d --all-databases

and restore it.

Afterwards dump only the data in separate insert statements, so you can split the files and restore them without having to concatenate them on the remote server

mysqldump --all-databases --extended-insert=FALSE --no-create-info=TRUE
    
por 01.10.2010 / 18:07
6

A maneira mais simples de dividir o arquivo de backup é usar o software sqldumpsplitter , que permite dividir o arquivo db em vários arquivos db. Faça o download aqui

Ou então use este comando do terminal.

split -l 600 ./path/to/source/file.sql ./path/to/dest/file-

Aqui, 600 é o número de linhas que você deseja ter em seus arquivos divididos. E os dois argumentos são fonte e o destino dos arquivos, respectivamente.

NOTA: você deve verificar os arquivos divididos, você não divide nenhum comando.

    
por 09.03.2015 / 19:04
2

Este código fará exatamente o que você quer (e é open source):

link

Ele permite que você divida qualquer arquivo SQL em vários arquivos menores (você pode definir o tamanho máximo). A sintaxe SQL será mantida correta e funciona com a sintaxe de consulta 'múltiplas inserções'.

Espero que isso ajude!

    
por 07.09.2011 / 19:41
0

1) Você tem a opção de enviar o arquivo por outro método, por exemplo: scp ou ftp e depois restaurá-lo a partir do arquivo local?

2) O seu provedor levará o arquivo em CD e o carregará para você?

3) Você pode restaurar o arquivo em um servidor local e, em seguida, fazer uma série de arquivos de backup dele usando critérios específicos para manter os tamanhos individuais abaixo?

4) Você poderia dividir o arquivo manualmente e depois arrumar os comandos SQL no final dos arquivos?

    
por 01.10.2010 / 20:21
0

Em vez de dividir o arquivo, você poderia usar um cliente MySQL em sua máquina local e conectá-lo ao banco de dados MySQL remoto. Eu uso HeidiSQL e achei muito bom.

É claro que pode demorar um pouco para enviar os 250 MB de instruções SQL pela Internet.

Você também pode tentar BigDump

    
por 02.02.2011 / 06:08
0

Você pode dividir um arquivo grande no Eclipse. Eu tentei um arquivo de 105GB no Windows com sucesso:

Basta adicionar a biblioteca MySQLDumpSplitter ao seu projeto: link

Nota rápida sobre como importar:

- In Eclipse, Right click on your project --> Import
- Select "File System" and then "Next"
- Browse the path of the jar file and press "Ok"
- Select (thick) the "MySQLDumpSplitter.jar" file and then "Finish"
- It will be added to your project and shown in the project folder in Package Explorer in Eclipse
- Double click on the jar file in Eclipse (in Package Explorer)
- The "MySQL Dump file splitter" window opens which you can specify the address of your dump file and proceed with split.
    
por 22.06.2015 / 21:36
0

Eu escrevi mysqldumpsplitter (script de shell), que divide os bancos de dados / tabelas conforme instruído de maneira rápida e fácil. Veja todos os possíveis casos de uso de como extrair do mysqldump .

sh mysqldumpsplitter.sh --source mysqldump-file.sql --extract DB --match_str database-name
    
por 24.07.2015 / 13:53
0

Eu também tive esse problema e decidi codificar um extremamente memory & Peça eficiente de CPU que divide um único arquivo .sql em vários (um por tabela).

Eu tive que escrevê-lo já que qualquer outra solução que encontrei não estava com bom desempenho. Em um despejo real de 16GB, consegui dividi-lo em menos de 2 minutos.

O código e as instruções estão disponíveis em a página do projeto no github

    
por 09.03.2016 / 20:46
0

Existem algumas opções se você pode executar um script bash ou perl. Experimente este em yoodey.com

#!/usr/bin/perl -w
#
# splitmysqldump - split mysqldump file into per-database dump files.
use strict;
use warnings;
my $dbfile;
my $dbname = q{};
my $header = q{};
while (<>) {    

# Beginning of a new database section:
    # close currently open file and start a new one
    if (m/-- Current Database\: \'([-\w]+)\'/) {
    if (defined $dbfile && tell $dbfile != -1) {
        close $dbfile or die "Could not close file!"
    }
    $dbname = $1;
    open $dbfile, ">>", "$1_dump.sql" or die "Could not create file!";
    print $dbfile $header;
    print "Writing file $1_dump.sql ...\n";
    }
    if (defined

$dbfile && tell $dbfile != -1) {
    print $dbfile $_;
    }
    # Catch dump file header in the beginning
    # to be printed to each separate dump file.
    if (!

$dbname) { $header .= $_; }
}
close $dbfile or die "Could not close file!"
    
por 25.01.2012 / 04:01