Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Tutto e di + - Convertire database mysql in sqlite
Forum - Tutto e di + - Convertire database mysql in sqlite

Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 12:56
Sabato, 14/04/2012
Sinceramente non sapevo dove postare, quindi posto qui..

Ho un database mysql esportato da phpmyadmin in NomeDB.sql

Aprendolo ho visto che ci sono tutte le istruzioni per la "costruzione" del database: "Create table.." "Insert .."

Volevo convertirlo in un db sqlite3 ma non ci sono riuscito. Cercando su internet ho visto che non è semplice, ed ho trovato uno shell script per la conversione.

Lo shell script non l'ho provato perchè mi manca il software per eseguirlo e sinceramente non mi va di stare a scaricare un programma per eseguire lo script che mi dovrebbe fare la conversione.. non è possibile che esista solo quello script, qualche altro programma dovrà pur esistere.

Mi sono venuti un pò di nervi perchè è da 2 ore che sto provando varie maniere per convertirlo, ma possibile che non esista un software che lo converte realmente?

Molti rimandano qui:
http://www.sqlite.org/cvstrac/wiki?p=ConverterTools

Dove c'è l'elenco dei vari software, io ad esempio ho provato il primo, ma non mi legge il mio db mysql..

Avete qualche suggerimento da darmi?

PM Quote
Avatar
Goblin (Member)
Expert


Messaggi: 375
Iscritto: 02/02/2011

Segnala al moderatore
Postato alle 23:20
Sabato, 14/04/2012
Cosa hai esportato ? i dati o la struttura oppure entrambi ??
Devi esportare la struttura (DDL) del DBMySQL e ricrearla in SQLite, poi esportare i dati, meglio se 1 tabella alla volta, e reimportarli.
Io per amministrare i DB SQLite uso: http://www.sqlite.org/ è free ed abbastanza "frendly"
Per MySQL uso: http://www.sqlmanager.net/en/products/studio/mysql



Ultima modifica effettuata da Goblin il 14/04/2012 alle 23:21


Ibis redibis non morieris in bello
PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 23:41
Sabato, 14/04/2012
bè non ne sono sicuro ma mi pare entrambi, aprendo il file sql si vedono tutte le varie "istruzioni" che creano le tabelle e che inseriscono i dati nei vari campi..

Il mio non è un problema di amministrazione, ma al momento mi serve solo di convertire questo db mysql in sqlite

grazie comunque dell'interessamento :)

PM Quote
Avatar
Goblin (Member)
Expert


Messaggi: 375
Iscritto: 02/02/2011

Segnala al moderatore
Postato alle 0:04
Domenica, 15/04/2012
Allora se hai tutto il gioco è fatto ..

Dividi la parte di creazione delle strutture da quella dell'import dei dati.
Ricrei le strutture in Sqlite e le confronti con le originali, poi 1 tabella alla volta butti dentro i dati


Ibis redibis non morieris in bello
PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 13:10
Domenica, 15/04/2012
allora vediamo se ho ben capito.. quello che mi suggerisci di fare è praticamente di creare un nuovo database con la stessa struttura del mio db mysql ed una volta fatto ciò inserire nelle tabelle i dati?

Fare un database sqlite con le varie tabelle non dovrebbe essere un problema..

ma i dati come dici di metterli? spero non a mano... perchè ho molti dati e quindi mi servirebbe qualche programma che prende i dati dal db mysql e li mette nel db sqlite, hai qualche idea di come posso fare?

Grazie dell'aiuto :D

PM Quote
Avatar
Goblin (Member)
Expert


Messaggi: 375
Iscritto: 02/02/2011

Segnala al moderatore
Postato alle 23:41
Domenica, 15/04/2012
Yes in linea di massima l'idea è quella, ma niente lavoro "amanuense".

Mi ripeto :)

1) esporta le strutture del DB MySql (ddl)
2) ricrea (esegui lo script esportato dal MySQL con le dovute modifiche) le strutture in SQLite
3) esporta i dati delle singole tabelle
4) reimporta i dati

Credo che qualsiasi tool di amministrazione abbia una voce per esportare strutture (DDL) e dati, e ovviamente anche il processo inverso, ossia di leggere un file sql ed eseguirlo.

Il punto 4 potrebbe essere "rognoso" nel caso hai campi "memo" o "binari" non ricordo come SQLite gestisce tali campi.

dunque per farti un piccolo esempio, io ho il mio DB (fanta.fdb) in Firebird, estraggo le strutture:
Codice sorgente - presumibilmente Delphi

  1. SET SQL DIALECT 3;
  2.  
  3. SET NAMES UNICODE_FSS;
  4.  
  5. SET CLIENTLIB 'FBCLIENT.dll';
  6.  
  7. CREATE DATABASE '127.0.0.1:C:\TEMP\FANTA.FDB'
  8. USER 'SYSDBA' PASSWORD 'masterkey'
  9. PAGE_SIZE 16384
  10. DEFAULT CHARACTER SET UNICODE_FSS;
  11.  
  12. CREATE GENERATOR GEN_GIOCATORI_ID;
  13. SET GENERATOR GEN_GIOCATORI_ID TO 1;
  14.  
  15. SET TERM ^ ;
  16.  
  17. CREATE PROCEDURE SP_GEN_GIOCATORI_ID
  18. RETURNS (ID INTEGER)
  19. AS
  20. BEGIN
  21.   SUSPEND;
  22. END^
  23.  
  24. SET TERM ; ^
  25.  
  26. CREATE TABLE ALLENATORI (
  27.     ID    INTEGER NOT NULL,
  28.     NOME  VARCHAR(15)
  29. );
  30.  
  31.  
  32. CREATE TABLE GIOCATORI (
  33.     ID       INTEGER NOT NULL,
  34.     NOME     VARCHAR(20),
  35.     SQUADRA  VARCHAR(20),
  36.     RUOLO    VARCHAR(20)
  37. );
  38.  
  39.  
  40. SET TERM ^ ;
  41.  
  42.  
  43. /* Trigger: GIOCATORI_BI */
  44. CREATE TRIGGER GIOCATORI_BI FOR GIOCATORI
  45. ACTIVE BEFORE INSERT POSITION 0
  46. as
  47. begin
  48.   if (new.id is null) then
  49.     new.id = gen_id(gen_giocatori_id,1);
  50. end^
  51.  
  52. SET TERM ; ^
  53.  
  54. SET TERM ^ ;
  55.  
  56. ALTER PROCEDURE SP_GEN_GIOCATORI_ID
  57. RETURNS (
  58.     ID INTEGER)
  59. AS
  60. begin
  61.   id = gen_id(gen_giocatori_id, 1);
  62.   suspend;
  63. end^
  64.  
  65. SET TERM ; ^



E salvo il tutto in un file che chiamo FantaStru.sql
poi estraggo i dati dalle tebelle

Codice sorgente - presumibilmente Plain Text

  1. INSERT INTO ALLENATORI (ID, NOME)
  2.                 VALUES (1, 'aaaaa');
  3. INSERT INTO ALLENATORI (ID, NOME)
  4.                 VALUES (2, 'bbbbb');
  5. INSERT INTO ALLENATORI (ID, NOME)
  6.                 VALUES (3, 'cccccc');
  7. INSERT INTO ALLENATORI (ID, NOME)
  8.                 VALUES (4, 'ddddd');
  9. INSERT INTO ALLENATORI (ID, NOME)
  10.                 VALUES (5, 'eeeee');
  11. INSERT INTO ALLENATORI (ID, NOME)
  12.                 VALUES (6, 'fffffff');
  13. INSERT INTO ALLENATORI (ID, NOME)
  14.                 VALUES (7, 'ggggg');
  15. INSERT INTO ALLENATORI (ID, NOME)
  16.                 VALUES (8, 'hhhhh');
  17. COMMIT WORK;



e come per le strutture lo salvo in un file Allenatori.sql, e così via per ogni tabella.

Apro "SQLite Expert" e carico FantaStru.sql, lo eseguo correggo eventuali errori di sintassi e la struttura è creata, poi faccio lo stesso con il file Allenatori.sql lo eseguo e così via... alla fine avrai il tuo DB su SQLite. spero di essere stato chiaro.
G


Ibis redibis non morieris in bello
PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 21:19
Lunedì, 16/04/2012
ok, grazie mille, per l'aiuto appena avrò un pò di tempo ci proverò, grazie ancora :D

PM Quote