Barra laterale

programmazione:sqlite:da_mysql_a_sqlite

Conversione db da Mysql a Sqlite

Autore: Fabio Di Matteo
Ultima revisione: 19/05/2011

Quando si deve convertire un intero db in un altro ,come da mysql a sqlite, si deve tenere conto del formato delle query con la relativa sintassi che non sempre è “standard”.
Di seguito elenchero' alcuni accorgimenti che ho preso per la conversione totale e con successo di alcuni miei db .

Gli strumenti che servono

Prima di cominciare la conversione assicurarsi di avere i seguenti strumenti.

  • interprete sqlite;
  • convertitore da mysql a sqlite (script o altro, ce ne sono diversi in rete)

Accorgimenti necessari

Una volta ottenuto il db sqlite lo si deve controllare. Procediamo.

sqlite miodb.sqlite
.schema

Fatto cio' ci dobbiamo assicurare sulle seguenti cose.

  1. La chiave primaria deve essere di tipo INTEGER e non INT e non deve avere dimensione. Altrimenti non funziona l'AUTOINCREMENT.
  2. Nelle query si deve fare attenzione a non inserire gli apostrofi ` tollerati in mysql. Meglio usare il classico apice singolo.
  3. Prestare attenzione ai campi convertiti in automatico come NOT NULL e in caso non serva rimuovere l'impostazione.
  4. Usare la funzione sqlite_escape_string() quando si inserisce del testo nel db invece che addslashes() . Oppure se si usa PDO il metodo PDOStatement::bindParam

Qualche esempio di tabella

CREATE TABLE "itcms_pages" (
  "id" INTEGER NOT NULL ,
  "home" varchar(1) ,
  "title" varchar(256) ,
  "body" text ,
  "menu" varchar(1) ,
  "menuorder" int(3) ,
  PRIMARY KEY ("id") 
);

Accorgimenti con PHP e il driver PDO

Stare attenti alla stringa DSN che cambia in base alle versioni di sqlite:

per sqlite 1

$DSN =  'sqlite:/web/htdocs/home/fabiodm/lib/db.sqlite' ;  

per sqlite 2

$DSN =  'sqlite2:/web/htdocs/home/fabiodm/lib/db.sqlite' ;  

per sqlite 3

$DSN =  'sqlite3:/web/htdocs/home/fabiodm/lib/db.sqlite' ;  

programmazione/sqlite/da_mysql_a_sqlite.txt · Ultima modifica: 18/04/2018 - 15:49 (modifica esterna)