Il est assez aisé de convertir une base SQLite pour MySQL/MariaDB. J'inspire le contenu de ce poste de cet article : http://fabianpeter.de/cloud/owncloud-migrating-from-sqlite-to-mysql/ écrit pour ownCloud mais qui peut fonctionner pour d'autres cas de migration bien sûr.
On commence par exporter le contenu de la base SQLite dans un fichier dump.sql :
sqlite3 database.sqlite3 .dump > dump.sql
On effectue ensuite automatiquement les modifications de syntaxe nécessaires pour que MySQL/MariaDB s'y retrouve à l'aide d'un script trouvé ici dont le contenu est rappelé plus bas pour archivage :
cat dump.sql | python sqlite3-to-mysql.py > nouveau-sql-pour-mariadb.sql
Le script de conversion (dont je ne suis pas l'auteur) :
#! /usr/bin/env python import sys def main(): print "SET sql_mode='NO_BACKSLASH_ESCAPES';" lines = sys.stdin.read().splitlines() for line in lines: processLine(line) def processLine(line): if ( line.startswith("PRAGMA") or line.startswith("BEGIN TRANSACTION;") or line.startswith("COMMIT;") or line.startswith("DELETE FROM sqlite_sequence;") or line.startswith("INSERT INTO \"sqlite_sequence\"") ): return line = line.replace("AUTOINCREMENT", "AUTO_INCREMENT") line = line.replace("DEFAULT 't'", "DEFAULT '1'") line = line.replace("DEFAULT 'f'", "DEFAULT '0'") line = line.replace(",'t'", ",'1'") line = line.replace(",'f'", ",'0'") in_string = False newLine = '' for c in line: if not in_string: if c == "'": in_string = True elif c == '"': newLine = newLine + '`' continue elif c == "'": in_string = False newLine = newLine + c print newLine if __name__ == "__main__": main()