Funciona como charme! Aqui está um pouco da documentação: $ ./mysql2sqlite.sh -h host -u MyUserName -pMySecretPassWord myDbase | sqlite3 database.sqlitegist.github.com/943776
kachar
O script apenas puxa argumentos da linha de comando e os passa para o mysqldump, para que você possa descobrir sobre a configuração de portas personalizadas, etc. com man mysqlouman mysqldump
Um método alternativo que funcionaria mesmo no Windows, mas que raramente é mencionado, é: use uma classe ORM que abstraia diferenças específicas do banco de dados para você. por exemplo, você os obtém em PHP ( RedBean ), Python (camada ORM do Django, Storm , SqlAlchemy ), Ruby on Rails ( ActiveRecord ), cacau ( CoreData ) etc.
ou seja, você pode fazer isso:
Carregue dados do banco de dados de origem usando a classe ORM.
Armazene dados na memória ou serialize em disco.
Armazene dados no banco de dados de destino usando a classe ORM.
Nota: Você precisará do ruby-devpacote para criar esses pacotes de gemas nativos.
Panda
1
Teve que usar "gem install sequel mysql2 sqlite3" e depois "sequel mysql2: // usuário: senha @ host / banco de dados -C sqlite: //db.sqlite" PERFECT
unom
17
Nem todo esquema de banco de dados pode ser convertido. O MySQL é mais complexo e rico em recursos que o SQLite. No entanto, se seu esquema for bastante simples, você poderá despejá-lo em um arquivo SQL e tentar importá-lo / carregá-lo em um banco de dados SQLite.
Após despejar seu banco de dados MySQL em um arquivo, você pode usar este script para convertê-lo para SQLite github.com/dumblob/mysql2sqlite (conforme mencionado na resposta de @David_LeBauer).
Paul Rougieux 22/01
7
Eu enfrentei o mesmo problema há cerca de 2 dias atrás, quando tive que converter um banco de dados MySQL de 20 GB + para SQLite. Não foi de forma alguma uma tarefa fácil e acabei escrevendo este pacote Python que faz o trabalho.
A vantagem de ser escrito em Python é que ele é multiplataforma (diferente de um script shell / bash) e pode ser facilmente instalado usando pip install(mesmo no Windows). Ele usa geradores e fragmentação dos dados que estão sendo processados e, portanto, é muito eficiente em termos de memória.
É invocável via linha de comando, mas também pode ser usada como uma classe padrão do Python, que você pode incluir em alguma orquestração maior do Python.
Veja como você o usa:
Usage: mysql2sqlite [OPTIONS]
Options:-f,--sqlite-file PATH SQLite3 database file [required]-d,--mysql-database TEXT MySQL database name [required]-u,--mysql-user TEXT MySQL user [required]-p,--mysql-password TEXT MySQL password-h,--mysql-host TEXT MySQL host. Defaults to localhost.-P,--mysql-port INTEGER MySQL port. Defaults to 3306.-c,--chunk INTEGER Chunk reading/writing SQL records-l,--log-file PATH Log file-V,--vacuum Use the VACUUM command to rebuild the SQLitedatabasefile, repacking it into a minimal amountofdisk space--use-buffered-cursors Use MySQLCursorBuffered for reading the MySQLdatabase. This can be useful in situations where
multiple queries,with small result sets, need to
be combined or computed with each other.--help Show this message and exit.
Hey @techouse, isso parece ótimo! Existe alguma maneira de funcionar com um .sqlarquivo de despejo ou requer conexão com um banco de dados MySQL instalado?
Vortek
Ei! Ummm, não, isso requer um banco de dados MySQL funcionando. Se você tem um dump sem um servidor real, sua melhor aposta é alterar o arquivo manualmente, se você souber o que está fazendo.
Klemen Tušar 15/04/19
@arkadianriver eu sugiro que você use sempre ambientes virtuais com Python 😎
Klemen Tušar
5
Sqlite tem oficialmente lista de ferramentas de conversão.
Existem diferentes maneiras de fazer isso. Eu também tive esse problema e pesquisei bastante e, em seguida, consegui uma maneira simples de converter o MySQL para SQLite.
Siga esses passos:
Primeiro você precisa instalar o SQLite DB Browser (muito pequeno e rápido para visualizar tabelas e dados)
Abra seu arquivo MySQL no bloco de notas ou seria ótimo se você abrir no bloco de notas ++
Remover as primeiras linhas extras contém informações ou consultas e salve-as.
Abra o Navegador de banco de dados SQLite, crie banco de dados e, em seguida, tabelas e os mesmos tipos do banco de dados MySQL.
Na barra de menus do navegador SQLite DB, selecione Arquivo-> e depois importe os dados do arquivo MySQL que você salvou.
Ele será facilmente convertido em SQLite após o diálogo de aviso.
Se houver erro, remova mais linhas extras se o seu arquivo MySQL tiver.
Você também pode instalar o MySQL to SQLite Converter Software na base de avaliação, mas as informações que estou fornecendo para conversão são o tempo de vida.
Isso funcionou bem se seus dados não tiverem caráter de apóstrofo. Por exemplo "Este é o livro de Pedro" em sql dumb será 'Este é o livro de Pedro'. Isso fará com que o DB Browser jogue um erro; para dados grandes, é difícil remover. Mas se você importar os dados do phpAdmin como CSV para o Navegador DB, essa importação será bem-sucedida. Espero que essa ajuda seja #
Seunope 19/12
1
Minha solução para esse problema executando um Mac foi
Instale Ruby e sequela de forma semelhante à resposta de Macario. Eu segui este link para ajudar na configuração do desenvolvimento Ruby, mysql e sqlite3 Ruby on Rails para Mac OSX
Instalar sequela
$ gem install sequel
Se ainda for necessário
% gem install mysql sqlite3
em seguida, usou o seguinte com base no documento Sequel bin_sequel.rdoc (consulte Copiar banco de dados)
Como posso copiar apenas uma tabela do banco de dados não inteiro do banco de dados mysql?
Atul Vaibhav
Para uma única tabela no passado, eu fiz isso, mas pode haver uma maneira melhor. Exporte a tabela como csv com os nomes das colunas na primeira linha marcada. Em seguida, usando o DB Browser for SQLite, importe a tabela para meu banco de dados sqlite existente usando a opção import table from csv. Você provavelmente precisará entrar e alterar os campos para o tipo necessário, pois acredito que todos os campos serão definidos como TEXTO. No projeto em que estava trabalhando, desenvolvemos um processo em que fizemos uma chamada de API para retornar todos os dados em uma tabela e depois inserimos / substituímos os dados no banco de dados de aplicativos.
Grant Sorte
Parece que está funcionando. No entanto, não consigo encontrar onde está o arquivo de saída. Pode me ajudar?
Pontios 2/11
1
Eu tentei vários métodos nesse segmento, mas nada funcionou para mim. Então, aqui está uma nova solução, que também achei muito simples:
Instale o RazorSQL . Funciona para Mac, Windows e Linux.
No RazorSQL, conecte-se ao seu banco de dados, no host local, por exemplo. A conversão não funciona com arquivos sql dump.
Clique com o botão direito do mouse em seu banco de dados -> Conversão de Banco de Dados -> selecione SQLite. Isso salvará um arquivo txt com todas as sqliteconsultas necessárias para criar esse banco de dados.
Instale um gerenciador de banco de dados SQLite, como o DB Browser for SQLite . Funciona em qualquer sistema operacional.
Crie um banco de dados vazio, vá para a guia Executar SQL e cole o conteúdo da etapa 3.
É isso aí, agora você tem seu banco de dados SQLite.
O RazorSQL parece apenas criar um arquivo * .sql "comum" com definições de tabela e informações de inserção de dados, mas nada particularmente específico do SQLite. Não exportou Views, o que é um grande sinal de menos. O cliente mysqldump que vem com o MySql também exporta visualizações, mas também produz muitas coisas condicionais, etc. o que o SQLite não digerirá.
dalilander
0
Se você tiver experiência, escreva scripts simples por Perl \ Python \ etc e converta o MySQL para SQLite. Leia os dados do Mysql e escreva-os no SQLite.
Gosto do SQLite2009 Pro Enterprise Manager sugerido por Jfly. Contudo:
O tipo de dados MySQL INT não é convertido no tipo de dados SQlite INTEGER (funciona com DBeaver)
Ele não importa constaints de chave estrangeira do MySQL (não foi possível encontrar nenhuma ferramenta que suporte a transferência de restrições de chave estrangeira do MySQL para SQlite.)
Na lista de ferramentas de conversão, encontrei o Kexi . É uma ferramenta de interface do usuário para importar de vários servidores de banco de dados (incluindo MySQL) para o SQLite. Ao importar algum banco de dados (digamos do MySQL), ele o armazena no formato Kexi. O formato Kexi é o formato SQLite 'nativo'. Então, basta copiar o arquivo kexi e ter seus dados no formato sqlite
Se você recebeu um arquivo de banco de dados e não instalou o servidor correto (SQLite ou MySQL), tente esta ferramenta: https://dbconvert.com/sqlite/mysql/ A versão de teste permite converter os 50 primeiros registros de cada tabela , o restante dos dados possui marca d'água. Este é um programa do Windows e pode despejar em um servidor de banco de dados em execução ou despejar a saída em um arquivo .sql
Respostas:
Existe um script mysql2sqlite.sh no GitHub
Conforme descrito no cabeçalho, o script pode ser usado assim:
alternativas
fonte
$ ./mysql2sqlite.sh -h host -u MyUserName -pMySecretPassWord myDbase | sqlite3 database.sqlite
gist.github.com/943776man mysql
ouman mysqldump
Aqui está uma lista de conversores . ( instantâneo em archive.today )
Um método alternativo que funcionaria mesmo no Windows, mas que raramente é mencionado, é: use uma classe ORM que abstraia diferenças específicas do banco de dados para você. por exemplo, você os obtém em PHP ( RedBean ), Python (camada ORM do Django, Storm , SqlAlchemy ), Ruby on Rails ( ActiveRecord ), cacau ( CoreData ) etc.
ou seja, você pode fazer isso:
fonte
Sequel (Ruby ORM) possui uma ferramenta de linha de comando para lidar com bancos de dados; você deve ter o ruby instalado e:
fonte
gem install mysql
egem install sqlite3
gem install pg
se você deseja converter de ou para um banco de dados do postgres, a sequela deve ter adaptadores para os principais bancos de dados.mysql
commysql2
se você estiver usandomysql2
ruby-dev
pacote para criar esses pacotes de gemas nativos.Nem todo esquema de banco de dados pode ser convertido. O MySQL é mais complexo e rico em recursos que o SQLite. No entanto, se seu esquema for bastante simples, você poderá despejá-lo em um arquivo SQL e tentar importá-lo / carregá-lo em um banco de dados SQLite.
fonte
Eu enfrentei o mesmo problema há cerca de 2 dias atrás, quando tive que converter um banco de dados MySQL de 20 GB + para SQLite. Não foi de forma alguma uma tarefa fácil e acabei escrevendo este pacote Python que faz o trabalho.
A vantagem de ser escrito em Python é que ele é multiplataforma (diferente de um script shell / bash) e pode ser facilmente instalado usando
pip install
(mesmo no Windows). Ele usa geradores e fragmentação dos dados que estão sendo processados e, portanto, é muito eficiente em termos de memória.Também fiz um esforço para traduzir corretamente a maioria dos tipos de dados do MySQL para SQLite .
A ferramenta também é exaustivamente testada e funciona em Python 2.7 e 3.5+ .
É invocável via linha de comando, mas também pode ser usada como uma classe padrão do Python, que você pode incluir em alguma orquestração maior do Python.
Veja como você o usa:
fonte
.sql
arquivo de despejo ou requer conexão com um banco de dados MySQL instalado?Sqlite tem oficialmente lista de ferramentas de conversão.
http://www2.sqlite.org/cvstrac/wiki?p=ConverterTools
fonte
Maneira mais simples de converter MySql DB em Sqlite:
1) Gere o arquivo sql dump para seu banco de dados MySql.
2) Carregue o arquivo no conversor online RebaseData aqui
3) Um botão de download aparecerá na página para baixar o banco de dados no formato Sqlite
fonte
Eu encontrei a solução perfeita
Primeiro, você precisa deste script (coloque-o em um arquivo chamado 'mysql-to-sqlite.sh'):
Em seguida, despeje uma cópia do seu banco de dados:
E agora, execute a conversão:
E se tudo correr bem, agora você deve ter um dumpfile.db que pode ser usado via sqlite3.
fonte
Existem diferentes maneiras de fazer isso. Eu também tive esse problema e pesquisei bastante e, em seguida, consegui uma maneira simples de converter o MySQL para SQLite.
Siga esses passos:
Primeiro você precisa instalar o SQLite DB Browser (muito pequeno e rápido para visualizar tabelas e dados)
Abra seu arquivo MySQL no bloco de notas ou seria ótimo se você abrir no bloco de notas ++
Remover as primeiras linhas extras contém informações ou consultas e salve-as.
Abra o Navegador de banco de dados SQLite, crie banco de dados e, em seguida, tabelas e os mesmos tipos do banco de dados MySQL.
Na barra de menus do navegador SQLite DB, selecione Arquivo-> e depois importe os dados do arquivo MySQL que você salvou.
Ele será facilmente convertido em SQLite após o diálogo de aviso.
Se houver erro, remova mais linhas extras se o seu arquivo MySQL tiver.
Você também pode instalar o MySQL to SQLite Converter Software na base de avaliação, mas as informações que estou fornecendo para conversão são o tempo de vida.
fonte
Minha solução para esse problema executando um Mac foi
Instalar sequela
Se ainda for necessário
em seguida, usou o seguinte com base no documento Sequel bin_sequel.rdoc (consulte Copiar banco de dados)
Um usuário do Windows pode instalar o Ruby e o Sequel para uma solução do Windows.
fonte
Eu tentei vários métodos nesse segmento, mas nada funcionou para mim. Então, aqui está uma nova solução, que também achei muito simples:
sqlite
consultas necessárias para criar esse banco de dados.É isso aí, agora você tem seu banco de dados SQLite.
fonte
Se você tiver experiência, escreva scripts simples por Perl \ Python \ etc e converta o MySQL para SQLite. Leia os dados do Mysql e escreva-os no SQLite.
fonte
Gosto do SQLite2009 Pro Enterprise Manager sugerido por Jfly. Contudo:
O tipo de dados MySQL INT não é convertido no tipo de dados SQlite INTEGER (funciona com DBeaver)
Ele não importa constaints de chave estrangeira do MySQL (não foi possível encontrar nenhuma ferramenta que suporte a transferência de restrições de chave estrangeira do MySQL para SQlite.)
fonte
Na lista de ferramentas de conversão, encontrei o Kexi . É uma ferramenta de interface do usuário para importar de vários servidores de banco de dados (incluindo MySQL) para o SQLite. Ao importar algum banco de dados (digamos do MySQL), ele o armazena no formato Kexi. O formato Kexi é o formato SQLite 'nativo'. Então, basta copiar o arquivo kexi e ter seus dados no formato sqlite
fonte
Se você recebeu um arquivo de banco de dados e não instalou o servidor correto (SQLite ou MySQL), tente esta ferramenta: https://dbconvert.com/sqlite/mysql/ A versão de teste permite converter os 50 primeiros registros de cada tabela , o restante dos dados possui marca d'água. Este é um programa do Windows e pode despejar em um servidor de banco de dados em execução ou despejar a saída em um arquivo .sql
fonte