Se você precisa migrar um banco de dados SQLite para MySQL, um script Python pode facilitar esse processo automatizando a conversão. Neste artigo, apresentamos um método eficiente para extrair a estrutura das tabelas e os dados de um banco SQLite3 (.db
) e transformá-los em um arquivo SQL compatível com MySQL.
Por que converter SQLite para MySQL?
SQLite é amplamente utilizado em aplicações locais e de pequeno porte, enquanto MySQL é mais adequado para sistemas maiores e em produção. Converter um banco SQLite para MySQL permite escalabilidade e integração com sistemas de gerenciamento de banco de dados mais robustos.
O Script de Conversão
A seguir, temos um script Python que faz a conversão automática:
import sqlite3
import re
def convert_sqlite_to_mysql(sqlite_db_path, output_sql_path):
# Conectar ao banco de dados SQLite
conn = sqlite3.connect(sqlite_db_path)
cursor = conn.cursor()
# Obter lista de tabelas
cursor.execute("SELECT name FROM sqlite_master WHERE type='table'")
tables = cursor.fetchall()
with open(output_sql_path, 'w', encoding='utf-8') as f:
f.write("-- Script gerado para MySQL\n\n")
for table in tables:
table_name = table[0]
# Obter esquema da tabela
cursor.execute(f"PRAGMA table_info({table_name})")
columns = cursor.fetchall()
# Criar estrutura da tabela no MySQL
f.write(f"DROP TABLE IF EXISTS `{table_name}`;\n")
f.write(f"CREATE TABLE `{table_name}` (\n")
col_defs = []
for col in columns:
col_name = col[1]
col_type = col[2]
col_notnull = "NOT NULL" if col[3] else ""
col_default = f"DEFAULT {col[4]}" if col[4] else ""
col_primary = "PRIMARY KEY" if col[5] else ""
# Converter tipos para MySQL
col_type = re.sub(r"INT\b", "INT", col_type, flags=re.IGNORECASE)
col_type = re.sub(r"TEXT\b", "VARCHAR(255)", col_type, flags=re.IGNORECASE)
col_type = re.sub(r"REAL\b", "DOUBLE", col_type, flags=re.IGNORECASE)
col_type = re.sub(r"BLOB\b", "LONGBLOB", col_type, flags=re.IGNORECASE)
col_defs.append(f" `{col_name}` {col_type} {col_notnull} {col_default} {col_primary}")
f.write(",\n".join(col_defs))
f.write("\n);\n\n")
# Exportar dados
cursor.execute(f"SELECT * FROM `{table_name}`")
rows = cursor.fetchall()
for row in rows:
values = ', '.join(f'"{str(value).replace("'", "''")}"' if isinstance(value, str) else str(value) for value in row)
f.write(f"INSERT INTO `{table_name}` VALUES ({values});\n")
f.write("\n")
conn.close()
print(f"Arquivo {output_sql_path} gerado com sucesso!")
# Exemplo de uso
# convert_sqlite_to_mysql("banco_de_dados.db", "banco_de_dados.sql")
Como Utilizar o Script?
- Instale o Python caso ainda não tenha:
sudo apt install python3 # Linux
brew install python # macOS
`
No Windows, baixe pelo site oficial python.org.
- Salve o script acima em um arquivo, por exemplo,
sqlite_to_mysql.py
. - Execute o script passando o caminho do banco SQLite e o nome do arquivo SQL gerado:
python sqlite_to_mysql.py
Considerações Finais
Esse método facilita a migração de bancos de dados SQLite para MySQL, convertendo automaticamente a estrutura das tabelas e os dados. Se precisar personalizar a conversão, você pode modificar o script conforme necessário.
Caso tenha dúvidas ou precise de suporte, deixe um comentário abaixo!
Referência: https://github.com/junovanfantin/converter-sqlite-to-mysql
Comments are closed