Respostas:
Existe um script mysql2sqlite.sh no GitHub
Conforme descrito no cabeçalho, o script pode ser usado assim:
./mysql2sqlite.sh myDbase | sqlite3 database.sqlite
alternativas
$ ./mysql2sqlite.sh -h host -u MyUserName -pMySecretPassWord myDbase | sqlite3 database.sqlite
gist.github.com/943776
man 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:
Sequel (Ruby ORM) possui uma ferramenta de linha de comando para lidar com bancos de dados; você deve ter o ruby instalado e:
$ gem install sequel mysql2 sqlite3
$ sequel mysql2://user:password@host/database -C sqlite://db.sqlite
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
com mysql2
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.
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:
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 SQLite
database file, repacking it into a minimal amount
of disk space
--use-buffered-cursors Use MySQLCursorBuffered for reading the MySQL
database. 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.
.sql
arquivo de despejo ou requer conexão com um banco de dados MySQL instalado?
Sqlite tem oficialmente lista de ferramentas de conversão.
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
Eu encontrei a solução perfeita
Primeiro, você precisa deste script (coloque-o em um arquivo chamado 'mysql-to-sqlite.sh'):
#!/bin/bash
if [ "x$1" == "x" ]; then
echo "Usage: $0 <dumpname>"
exit
fi
cat $1 |
grep -v ' KEY "' |
grep -v ' UNIQUE KEY "' |
grep -v ' PRIMARY KEY ' |
sed '/^SET/d' |
sed 's/ unsigned / /g' |
sed 's/ auto_increment/ primary key autoincrement/g' |
sed 's/ smallint([0-9]*) / integer /g' |
sed 's/ tinyint([0-9]*) / integer /g' |
sed 's/ int([0-9]*) / integer /g' |
sed 's/ character set [^ ]* / /g' |
sed 's/ enum([^)]*) / varchar(255) /g' |
sed 's/ on update [^,]*//g' |
sed 's/\\r\\n/\\n/g' |
sed 's/\\"/"/g' |
perl -e 'local $/;$_=<>;s/,\n\)/\n\)/gs;print "begin;\n";print;print "commit;\n"' |
perl -pe '
if (/^(INSERT.+?)\(/) {
$a=$1;
s/\\'\''/'\'\''/g;
s/\\n/\n/g;
s/\),\(/\);\n$a\(/g;
}
' > $1.sql
cat $1.sql | sqlite3 $1.db > $1.err
ERRORS=`cat $1.err | wc -l`
if [ $ERRORS == 0 ]; then
echo "Conversion completed without error. Output file: $1.db"
rm $1.sql
rm $1.err
else
echo "There were errors during conversion. Please review $1.err and $1.sql for details."
fi
Em seguida, despeje uma cópia do seu banco de dados:
you@prompt:~$ mysqldump -u root -p --compatible=ansi --skip-opt generator > dumpfile
E agora, execute a conversão:
you@prompt:~$ mysql-to-sqlite.sh dumpfile
E se tudo correr bem, agora você deve ter um dumpfile.db que pode ser usado via sqlite3.
you@prompt:~$ sqlite3 dumpfile.db
SQLite version 3.6.10
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .tables
dg_cities dg_forms dg_surnames
dg_counties dg_provinces dg_user_accounts
dg_countries dg_provinces_netherlands
dg_first_names dg_states
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.
Minha solução para esse problema executando um Mac foi
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)
sequel -C mysql://myUserName:myPassword@host/databaseName sqlite://myConvertedDatabaseName.sqlite
Um usuário do Windows pode instalar o Ruby e o Sequel para uma solução do Windows.
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.
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