Notez que cet article a été écrit il y a plus de 3 ans, mais il n'est pas forcément obsolète.
Une conversion de SQLite vers mySQL/MariaDB peut être intéressante si l’on veut convertir, par exemple, une base de données par défaut en SQLite (sur SPIP, en particulier) vers le format plus pratique mySQL/MariaDB, notamment pour inspecter les tables grâce à phpMyAdmin.
Il existe un script de conversion en python permettant de faire le travail :
sqlite2mysql.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
#! /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() |
On exporte d’abord le contenu de la base SQLite dans un fichier dump.sql.
1 |
$ sqlite3 database.sqlite3 .dump > dump.sql |
On lance ensuite le traitement sur le dump créé :
1 |
$ cat dump.sql | python sqlite2mysql.py > database.sql |
Et hop, une jolie base mySQL/MariaDB obtenue à partir d’une base SQLite3.