Home

JOB

Member

People

Mailing list


Iscriviti
Cancellati

Tags



Access2MySQL (articoli)

Con il progressivo diffondersi di ColdFusion in ambiente Unix l'esigenza d'esportare precedenti database Access su MySQL è sempre più sentita. In quest'articolo cercherò d'illustrare le strade più semplici che si possono percorrere:



  1. Esportare con la funzione di Access "Salva con nome/esporta".
  2. Linkare le tabelle.
  3. Utilizzare uno script in modo da esportare i dati in un file di testo contenente istruzioni SQL.
  4. Creare un file di testo di tipo CSV, con i valori separati da virgole.
  5. Utilizzare ColdFusion.

1) Il primo metodo è il più semplice ed immediato. Prima di utilizzare la funzione di Access occorre installare il driver MyODBC che potete prelevare dal sito di MySQL a quest'indirizzo: http://www.mysql.com/downloads/api-myodbc.html .Una volta installato il driver dovete creare un DSN per il database MySQL in cui desiderate esportare i dati. La procedura è la stessa come per qualunque origine dati ODBC. Dal pannello di controllo aprite origine dati ODBC, decidete se il DSN deve essere di sistema o utente e poi cliccate su Aggiungi. A questo punto selezionate il driver MySQL e comparirà la schermata TDX MySQL Driver Default Configuration. I campi da completare sono:



  • Window DSN name: un nome a piacere che volete dare a questa configurazione.
  • MySQL Host: l'indirizzo IP o il nome di dominio.
  • MySQL Database Name: il nome del database in cui si esportano i dati.
  • User: nome utente con cui vi connettete al DB.
  • Password: la password di accesso.
  • Port: deve essere la 3333 per MySQL 3.20 oppure la 3306 (default) per MySQL 3.21 o superiori.

Infine vi sono una serie di opzioni che possono influenzare il comportamento del driver, il mio consiglio è di spuntare Change BIGINT Columns to INT, per il resto potete lasciarle invariate. Terminata questa prima parte aprite il database da esportare, selezionate una tabella e cliccate su: File » Salva con nome/esporta » File o database esterno. Viene chiesto di selezionare il tipo di file, scegliete Database ODBC e successivamente selezionate l'origine dati (DSN) che avevate impostato precedentemente. Se tutto è andato bene Access si collega con il server MySQL, crea la tabella ed esporta i dati relativi. Occorre comunque ricordare che:



  • A causa di un bug di Access 2000 dovete scaricare l'ultima versione di MDAC della Microsoft dal sito: http://www.microsoft.com/data. Se invece usate Access 97 non avrete nessun problema.
  • La definizione dei campi della tabella su MySQL potrebbe non corrispondere a quella di Access, infatti alcuni tipi di dati definibili in Access non sono compatibili con MySQL e viceversa.
  • Con molti record la procedura potrebbe risultare estremamente lenta.

 2) Questo metodo è adatto se avete già creato le tabelle su MySQL e non avete grandi quantità di dati da esportare. Dopo aver installato MyODBC ed aver impostato un'origine dati, aprite Access e create un database vuoto. Cliccate su File » Carica dati esterni » Collega tabelle. Selezionando l'origine dati avrete creato un link con le tabelle su MySQL. A questo punto aprite il database originale copiate le tabelle o i campi che dovete esportare ed incollateli nel database di Access con le tabelle collegate. Le tabelle su MySQL verranno automaticamente popolate.


3) Esistono diversi script che permettono di esportare i dati formattati con istruzioni SQL, in un file di testo, compatibile con MySQL. Quello più utilizzato è uno script in Visual Basic che deve essere copiato ed incluso come modulo nel database di Access. L'ultima versione la potete prelevare qui: http://www.netdive.com/freebies/importsql/module.txt. Lo script prepara le query SQL per creare le tabelle, cercando di mantenere le definizioni del tipo di dati il più aderenti possibile al database originale. Se le tabelle sono già presenti su MySQL, queste verranno eliminate. Dopo aver eseguito le chiare istruzioni del modulo, potete importare i dati o attraverso la shell con il comando "MySQLimport nomedatabase nomefile", oppure effettuando una query SQL di tipo LOAD DATA che ha quasi tutte le opzioni disponibili da linea di comando. Prima di procedere leggete comunque queste pagine del manuale di MySQL: http://www.MySQL.com/documentation/MySQL/commented/manual.php3?section=LOAD_DATA


http://www.MySQL.com/documentation/MySQL/commented/manual.php?section=MySQLimport


4) Un altro sistema è di esportare i dati in un file di testo di tipo CSV (Comma Separated Values). Dopo aver selezionato Salva con nome/esporta scegliete File di testo (*.txt;*.csv;*.tab;*.asc). Come delimitatore di campo utilizzate il punto e virgola, e come qualificatore di testo le doppie virgolette. Il file CSV appena creato può risiedere sia su un server remoto, sia sul server in cui è presente MySQL. Nel secondo caso la procedura è chiaramente più rapida e potete eseguirla da riga di comando oppure preparando una query come questa:


LOAD DATA INFILE "miofile.csv"
INTO TABLE mia_tabella
FIELDS TERMINATED BY ";"
LINES TERMINATED BY "\r\n"
ENCLOSED BY "\"


Il vantaggio di questa soluzione rispetto alle altre è che non vengono cancellate le tabelle esistenti permettendovi di crearle utilizzando tutte le proprietà dei campi disponibili su MySQL. Tenete presente che MySQL assume per default che i valori presenti nel file sono nello stesso ordine dei campi nella tabella d'importazione. E' comunque possibile specificare un differente ordine delle colonne.


5)Siccome MySQL può eseguire istruzioni SQL da un file di testo, se avete particolari esigenze potete effettuare con ColdFusion una query sulla tabella che interessa esportare e poi scrivere il risultato su un file in questo modo:


INSERT INTO tabella_mysql VALUES ('#valore1#',' #valore2#',' #valore3#');\n


In questo caso bisogna però prestare attenzione a mettere un carattere di escape prima di un'eventuale virgoletta presente nei dati. Utilizzando il backslash è sufficiente un #Replace(valore1,"'","\'","ALL")#.


Per finire vi ricordo che esistono numerosi programmi per amministrare MySQL, molti dei quali facilitano enormemente l'importazione/esportazione dei dati. Uno sicuramente da provare è Mascot. Se non vi soddisfa date pure un'occhiata al nutrito elenco sul sito ufficiale di MySQL: http://www.mysql.com



rating
se vuoi votareti devi registrare e devi effettuare login; clicca qui per registrarti gratuitamente.
comments
se vuoi lasciare un commento ti devi registrare e devi effettuare login; clicca qui per registrarti gratuitamente.


Fabio Serra
06/09/2000