Newsgroup: it.comp.appl.access
Titolo: Migrazione file dati da ACCESS a MySql o Postgres ?

Ciao a tutti,
si vorrebbe migrare SOLO la base dati di Microsoft Access ad un diverso DB 
free.
Quale delle due soluzioni in oggetto � meno difficoltosa per sintassi ecc. ?
In alternativa SQL Server Express che limitazioni ha ? Dimensione di files, 
numero max di accessi contemporanei ecc. ?
Grazie
Roby 

Roby HL ha scritto:

Non conosco MySql o Postgres se nn per sentito dire e per pareri di amici
(tutti buoni, tra l'altro...), ma ho appena terminato l'upsize da mdb a SQL
express 2005 e 2008.
I dati tecnici sono semplici: accesso ILLIMITATO, max capacit� di storage 4 Gb
(parlo del file di dati), motore identico a SQL server. Pu� utilizzare per� un
solo processore e al max 1 Gb di memoria. Ma cmq mi paiono dati + che
confortanti!!!!!
La migrazione, se l'mdb era fatto a regola, senza troppi 'trucchi' di Access o
cose strane e lo usi in ODBC, non dico che sia indolore ma quasi...
Parlo ovviamente di far girare l'applicatico dignitosamente. Fare
un'applicazione client/server reale, demandando tutte le operazioni sui dati
al motore SQL, stored procedure, trigger, privilegi di accesso, viste e tutto
quanto chiaramente � un'altra cosa.....ma sono tutte cose che puoi fare anche
in corso d'utilizzo
Ciao
Roberto
-- 
Questo articolo e` stato inviato dal sito web 
http://www.nonsolonews.it


Gia' che devi cambiare gestore dei dati, ti consiglio di orientarti su 
Postgresql piuttosto che su MySql o Sql Server Microsoft
Il motivo e' presto detto, Postgresql e' aggratisse per tutti gli utilizzi, 
non cosi' per MySql e Sql Server
Inoltre Postrgesql puo' girare su diversi sistemi operativi, e per un db 
server poter girare su una struttura robusta ed affidabile e' una delle 
prime necessita'
Ti invito a dare un'occhiata anche a Firebird, che a mio parere surclassa 
tutti gli altri in quanto a semplicita' di installazione, mantendo ottime 
prestazioni e capacita' di controllare con affidabilita' una base dati anche 
discretamente voluminosa
Per il travaso dati, e' un po' per tutti la stessa minestra, qualche tipo 
dovrai cambiarlo ma la maggior parte dei campi verra' convertita tale quale
Magari uno chiama long quello che l'altro chiama integer ma la sostanza e' 
sempre quella
Ti consiglio caldamente di mettere in conto da subito un programma specifico 
per convertire da un database ad un altro, cosi' puoi intercettare tutte le 
anomalie che incontrerai durante il passaggio dei dati
Affidarsi ai vari wizard o convertitori da un db all'altro, anche noi 
abbiamo provato con l'unico risultato di sprecare del tempo prezioso
Questo perche' le variabili sono tante e se una sola non quadra come 
vorresti allora devi comunque rimaneggiare il risultato della conversione 
spendendo tempo, e tempo e tempo
Parti subito con una procedura che con un ciclo ti legga l'mdb e crei al 
volo l'istruzione per ricreare la struttura equivalente sul db destinazione
Poi con un altro ciclo passi i dati dal sorgente alla destinazione
Ci metti un po' di piu', ma una volta fatta la procedura hai il controllo 
completo di quello che succede
Ciao
RobertoA


Dunque ho gi� fatto questa esperienza migrando sql server. Il punto � che 
per questo cliente il costo di quest'ultimo sembra eccessivo...
A parte la migrazione dei dati per quel che riguarda l'impatto 
sull'applicativo e mi riferisco a quelle sezioni di codice da riscrivere per 
comandi SQL sparati direttamente sul db, uso dei recordset ecc. consigli 
sempre postgres o firebird ?
Quest'ultimo supporta i trigger ?
Grazie
ROby
 

 Roby
Ho migrato tutte le mie applicazioni gi� da 2 anni sotto SQL  Express 2005.
L'accesso a queste applicazioni avviene sia tramite Access + ODBC che
tramite pagine ASP dall'esterno, dato che il server ha un indirizzo
pubblico posso anche con un telefonino accedere alla ns. banca dati.
Nessun problema per quanto riguarda la contemporaneit� degli accessi. Da
sottolineare la gestione grafica di SQL Express tramite SSMSE.
Semplicissima e potente.
--
sv
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

"Roby HL" <rb...@NO-SPAM-STRUNZlibero.it> ha scritto nel messaggio 
news:u1_fn.118688$813....@tornado.fastwebnet.it...

Certo, come tutti i db seri supporta l'esecuzione di codice allo scatenarsi 
di particolari eventi (before/after  insert/delete/update) su determinate 
tabelle


Un articolo tanto per capire che tipo di basi dati e' possibile gestire con 
Firebird
E se vedi bene stanno parlando di un pc da 400 euri, non di sistemi 
enterprise dal costo proibitivo
Questo per quanto riguarda le capacita' tecniche
Poi se vogliamo anche assicurazioni sulla solidita' della gestione dati, 
sulla destra, alcune aziende che lo hanno adottato per i loro prodotti di 
punta, e questo puo' darti un'idea sulla stabilita' ed affidabilita' del 
sistema
http://www.ib-aid.com/articles/item104

RobertoA ha scritto:




Ho sentito strane voci su Firebird, come se fosse arrivato alla fine dei suoi
giorni....ma nn garantisco. E cmq, SQL Express � GRATIS anche per usi
commerciali......e tutti gli apparati che ci girano intorno (Manager,
analizzatore di query, SQL Profiler [questo x la versione express � di terze
parti...] sono micidiali.....


>>>ecc.

Si, anche mio cugggino l'ha sentito dire
Ma sai, non c'e' da credergli granche'
Almeno finche' qualcuno non porta qualche documento sicuro o mostra una 
qualche autorevole opinione
Per quanto riguarda Sql Express, nulla da obiettare, se vuoi 
consigliarlo/usarlo fai pure
Solo che ce ne sono di meglio, e Firebird e' uno fra questi
Ciao
RobertoA


Salve a tutti Approfitto della discussione per chiedere aiuto, allora 
giï¿œ avevo chiesto per cambiare il gestore dati, e credo che sia stato 
proprio robertoA ad orientarmi verso Firebird non avendo capito molto su 
come collegarlo al file access, ho provato ad installare sql express che 
ï¿œ gratis ma non ci sono riuscito dopo che ho risolto tutti i problemi di 
configurazione e finalmente sono arrivato alla fine dell'installazione, 
e ce ne ho messo di tempo, mi dice che l'installazione non ï¿œ andata a 
buon fine, lasciamo perdere, a questo punto vorrei provare Postgresql o 
qualcun altro che possa lavorare con msaccess ed avere anche una guida 
grazie.

 grazie.
Ciao Gianfranco
Vedi che SQL Express (2005) l'ho installai inizialmente su un portatile
con appena 500 Mega di RAM.. senza alcun problema. 
Devi seguire attentamente quanto viene descritto nel sito della MS.
Vedi:
http://www.microsoft.com/downloads/details.aspx?FamilyID=220549B5-0B07-4448-8848-DCC397514B41&displaylang=it
Per quanto riguarda la guida ha tutto lui associandolo alla gestione
grafica SSMSE che � di una semplicit� estrema. Lo gestisci SQLExpress come
gestisci Access. Ci sono pure le autocomposizioni.


 altro che possa lavorare con msaccess ed avere anche una guida grazie.
Se non sei riuscito ad 'attaccare' Firebird ad Access sei stato proprio 
sfortunato
Devi:
1- installare Firebird (lanci l'eseguibile e va da solo - tempo 1 minuto)
2- installare il driver odbc per vedere i db Firebird (lanci l'installer e 
fa tutto da solo - tempo 0,5 minuti)
3- configurare un dsn per vedere il db che ti interessa (10 minuti la prima 
volta - 1 minuto dalla seconda in poi)
4- da Access eseguire un collegamento a tabelle esterne, usando il driver 
odbc, il dsn che hai appena configurato (tempo 10 minuti la prima volta - 1 
minuto dalla seconda in poi)
5- Fine, tempo totale speso = circa 20 minuti la prima volta, circa 5 minuti 
dalla seconda volta in poi
Se le tabelle sono collegate, vedrai i dati esattamente se stessi lavorando 
con tabelle locali, unica accortezza se vuoi che ti siano permesse insert, 
update, delete (ma questo e' valido su qualsiasi altro db che vedi via odbc) 
devi ricordarti di definire almeno un indice per ogni tabella (ma il buon 
senso dice che avresti gia' dovuto farlo, anche senza ricordartelo)
Da dentro Access puoi eseguire tutte le operazioni via sql usando 
CurrentDb.execute "update ARTICOLI set PREZZO=20 where CODICE_ARTICOLO=123"
Per la creazione tabelle nuove, modifica struttura delle tabelle, e' 
sicuramente piu' pratico usare db manager esterno, ti consiglio IbExpert 
esiste anche la versione free
Ciao
RobertoA

 gestisci Access. Ci sono pure le autocomposizioni.
A Firebird basta qualche mega di ram per farlo girare


grazie a tutti e due per l'aiuto,riprovo con firebird visto che l'ho 
installato subito anche se poi non l'ho saputo gestire e poi se ho 
problemi riprovo con sqlserver express
e speriamo che tutto questo alvoro porti a qualcosa di buono


Vorrei chiedere una cosa a RobertoA, ma il collegamento alle tabelle 
avviene sul file dati di access oppure occorre convertirle in firebird

 avviene sul file dati di access oppure occorre convertirle in firebird
Per le prime prove ti conviene:
- installare Firebird
- installare driver odbc Firebird
- installare IbExpert
- avviare IbExpert e crearti un database nel server Firebird
- mettici un paio di tabelle di prova con qualche campo dentro
- creare il dsn usando il pannello di gestione dei driver odbc (Pannello Di 
Controllo/Strumenti Amministrazione/Driver Odbc)
- avviare Access e sulla sezione TABELLE (che sara' vuota) collegare le 
tabelle esistenti dentro Firebird usando la funzione 
tastoDestro/CollegaTabelle/TipoFile=Odbc e selezioni il dsn desiderato
Ti ritroverai con un paio di tabelle collegate dentro Access, tabelle che 
saranno usabili esattamente come quelle interne di Access
Unica accortezza, sulle tabelle fisiche, con IbExpert crea almeno un indice, 
altrimenti durante il collegamento Access te lo chiede e poi non riesce a 
modificare i dati collegati
Ultimo consiglio, focalizza i tuoi sforzi su un sistema, se al primo scoglio 
abbandoni e' normale che non riesci ne con l'uno ne con l'altro, tieni duro 
e vedrai che non te ne pentirai, sicuro al ciento picciento
Se hai bisogno son qua ( o la' )
Ciao
RobertoA

>>> grafica SSMSE che ï¿œ di una semplicitï¿œ estrema. Lo gestisci SQLExpress

Grazieeeeeeeeee. Mi metto subito al lavoro e ti faccio sapere


sembrava tutto facile ma poi. Allora caro robertoA ho eseguito tutto 
fino alla creazione del dns. Quando cerco di collegare il file di prova 
tramite odbc da access mi dice " impossibile effettuare la connessione 
utilizzandi i parametri dell'origine dati su file inseriti.Salvare su 
file non verificato?". Allora naturalmente quando chiedo il collegamneto 
mi chiede la username la password e il ruolo. Ho provato ad inserire la 
user e la pass che ho messo nel profilo, NIENTE, ho provato ad inserire 
quella che ho messo nel database NIENTE ho provato a mettere gli stessi 
dati in tutti e due i profili NIENTE. Faccio il test da odbc tutto ok 
faccio il test dal database ibexpert tutto ok
non riesco ad entrare da access. Altra cosa fondamentale come converto 
le tabelle access  nel nuovo db. Grazie e scusa la rottura penso perï¿œ 
come ho giï¿œ visto e di interesse anche per altri

 gi� visto e di interesse anche per altri
Fermo la'
Prima cosa da verificare, sul dsn appena creato c'e' un tasto per testare 
che la configurazione sia corretta
Premendo il tasto del 'prova connessione' cosa ti risponde?
Il dsn e' corretto oppure no?
Nome utente e password devono esserci gia' sull'impostazione del dsn e se 
non ce li metti, non funziona il 'prova connessione'
Quindi il primo step e' ottenere il  'prova connessione' funzionante
Una volta che sei sicuro di questo allora puoi passare al tentativo di 
collegare le tabelle da dentro Access
Non dovrebbe chiederti niente relativamente a nome utente e password, a meno 
che nel dsn non siano impostate
Ricordati di creare almeno un indice nelle tabelle dentro Firebird
Una volta che sei riusito ad far parlare Access con Firebird, usando un 
mini-db di test puoi pensare a tentare la conversione del tuo db Access in 
formato Firebird (o altro)
Per la conversione, io farei una procedura che, dopo essersi collegata al db 
sorgente, ciclando tabella per tabella, vada a vedere il nome ed il tipo di 
ogni singolo campo
A questo punto, supponiamo di essere alla prima tabella (Articoli), primo 
campo (codice_articolo), potrai avviare una funzione che ti crea il campo 
sulla tabella del db destinazione
Se la tabella sul db destinazione non esiste ovviamente bisogna prima 
crearla
Il tutto a colpi di istruzioni sql usando la sintassi classica
CurrentDb.execute "create table ARTICOLI (codice_articolo varchar(50), 
descrizione_articolo varchar(200) )"
Questo per la crezione della struttura, stessa solfa per il passaggio dati, 
vai di Do - Loop ciclando fra tutte le tabelle e per ogni tabella dal primo 
campo all'ultimo, ti crei la tua bella stringa da sparare al db server e poi 
gli dai giu' di
CurrentDb.execute "insert into ARTICOLI (codice_articolo, 
descrizione_articolo) values ("abc123","Articolo di gran moda")"
E' inizialmente un po' laborioso inizialmente ma lo fai una sola volta e poi 
te lo ritrovi buono per tutte le altre tue necessita' di travaso dati, da 
qualsiasi tipo db a qualsiasi altro tipo db
Personalmente ti sconsiglio di evitare da subito i vari wizard e 
auto-importazioni che per una ragione o per un'altra non fanno mai quello 
che desideri
Ne ho provate una gran quantita' prima di arrivare a questa conclusione, poi 
ho benedetto quella giornata di lavoro impiegata per creare la mia procedura 
di importazione, che lavora esattamente come voglio io e soprattutto che 
posso modificare in qualsiasi momento per adattarsi a necessita' diverse da 
quelle iniziali, e per questo ti consiglio prima di prendere un po' di 
confidenza col nuovo db e poi di tenerlo stretto ma stretto perche' vale 
tanto oro quanto pesa (purtroppo non pesa niente e quindi il paragone non e' 
valido ma l'intento della frase e' chiaro)
Ad esempio nella conversione di un progetto la tabella pagamenti dal sistema 
vecchio diventavano due tabelle la pagamenti_testate e la pagamenti_righe 
nel sistema nuovo
Alcuni campi della tabella sorgente venivano usati per riempire il record 
della pagamenti_testate, altri campi della tabella sorgente venivano usati 
per riempire la pagamenti_righe
Semplice da fare se hai il codice sottomano, impossibile anche solo pensarla 
con un sistema di importazione che prende da qua e butta di la solamente con 
la conversione da un tipo all'altro
Ciao
RobertoA


Ho aggiunto una nuova configurazione senza togliere la vecchia ora il 
test e positivo perï¿œ quando creo ildsn utente o server mi chiede user e 
pass e poi mi dice che non puï¿œ collegarsi

 poi mi dice che non pu� collegarsi
Intanto cerca di essere piu' preciso su cosa funziona e cosa non va, perche' 
dai tuoi scritti mica si capisce un granche'
Mi sembra di intuire che il test sul dsn funzioni, dico giusto (non capisco 
pero' il "..mi chiede usere e pass.." perche' gia' avresti dovuto metterceli 
dentro) ?
Bon, se cosi' fosse allora concentriamoci sul collegamento tra Access ed il 
dsn
Basta che crei un file mdb nuovo, vai nella sezione Tabelle, tasto destro 
"collega Tabelle'
Poi come TIPO FILE indichi ODBC e ti dovrebbe apparire il pannellino di 
scelta dei dsn esistenti nel sistema
Una volta scelto quello che desideri, dovresti vedere le tabelle del db 
apparire nella sezione Tabelle dentro Access
Ciao
RobertoA

 RobertoA
Ok cercherï¿œ di essere piï¿œ preciso: ho installato firebird OK
Ho installato i drive ok
entro da pannello di controllo strumenti  apro origine dati odbc
DSN utente aggiungo driver odcb (selezione drive firebird/interbase
impostazioni: nome sorgente dati (dsn) Ho provato sia con un nome 
personale che un nome creato dsn(su file)
database: il database di prova:C:\PROVADATI.FDB
client dll(C:\Programmi\Firebird\Firebird_2_1\bin\fbclient.dll)
utente del database:SYSDBA; parola d'ordine: masterkey; ruolo: ho messo 
sia administrator che vuoto
il resto l'ho lasciato come era
confermo, clicco su prova connessione: risposta: la connessione ha avuto 
successo.
creo un nuovo file access2003 prova.mdb
vado su file caricadati collega tabelle tipofile  database odbc
mi presenta seleziona origine dati
posso crearne uno nuovo oppure utilizzare quello creato in precedenza
vado su quello creato dall'origine odbc "datiprova.dsn"
mi chiede user password e ruolo inserisco gli stessi messi in precedenza
risposta: odbc: chiamata non riuscita [odbc firebird driver] file is not 
a valid database(#-922)
Premetto che quando ho creato "datiprova.dsn" mi chiede di inserire 
user pass e ruolo e mi risponde: "impossibile effettuare una connessione 
utilizzando i parametri dell'origine dati su file inseriti. Salvare il 
DSN su file non verificato? avendo risposto "SI" mi ha creato cmq il file.
Ti faccio presente che il tutto lo sto facendo nello stesso pc non da 
quello in rete questo puï¿œ creare problemi non credo collego le tabelle 
anche se sono locali attraverso odbc
ciao e non ti scocciare grazie grazie

 ciao e non ti scocciare grazie grazie
Va bene sia che tu sia sullo stesso pc, sia che tu vada a 'pescare' i dati 
su un pc remoto
Anzi a questo proposito ti consiglio di usare, per il campo DATABASE una 
stringa che ti rappresenti sempre in modo univoco il pc sul quale hai i dati
Ad esempio se avessi tre pc, il 192.168.1.10, il 192.168.1.20 ed il 
192.168.1.30 ed i dati sono sul 10 finale, su tutti e tre puoi usare come 
nome database:
192.168.1.10:c:\provadati.fdb
L'ho trovato piu' comodo perche' poi le routine per l'installazione del 
prodotto sono uguali sia che tu installi su una macchina client sia che 
installi un clint del programma sulla macchina che fa anche da db server
E chi si scoccia? Ma non credere che sia aggratisse l'aiuto
Come altri hanno aiutato me, spero che l'aiuto che ricevi tu lo possa 
fornire a qualchedun'altro in futuro (o anche in passato se ce la fai)
Ciao
RobertoA


Ciao RobertoA finalmente ho potuto rimetterci mano, allora ho fatto un 
nuovocollegamneto con i dati che mi hai consigliato(DSN sistema), 
piccolo problema non ha creato un file dsn come lo recupero

 rete?
Ora e' tutto in discesa
(se ffa ppe dire)
E certo che puoi inserire delle query nel server
E' anche a questo che serve un db server serio
Pensa che puoi anche costruire delle funzioni da inserire nel db server
Ma la caratteristica che apprezzerai da subito e' la possibilita' di 
backuppare il db senza spegnere le postazioni di lavoro
Gli utonti lavorano ed il sistema ti fa automaticamente una copia ogni 
mezz'ora
Pensa che figata quando ti chiama il cliente dicendoti che la segretaria ha 
sputtanato l'archivio prezzi di 200.000 articoli, e tu lo inviti a calmarsi 
che tanto potra' ripartire con i dati come mezz'ora fa
Mi sento un po', come dire....  Firebird evangelist
Ciao
RobertoA

 problema non ha creato un file dsn come lo recupero
Veramente se usi il dsn di sistema, il file non lo crea
Impostare il dsn di sistema equivale a scrivere dentro il registry nella 
sezione  .....odbc
E' li che Windows va a cercare le fonti dati registrate nel picci
RobertoA

>> RobertoA
A quanto pare non ï¿œ tutto oro quello che luccica, Ho provato a fare un 
collegamneto di rete e non ï¿œ andato a buon fine: nel secondo pc ho 
eseguito la stessa procedura di quello locale, l'unica differenza ï¿œ che 
per il file di database ho eseguito una connessione di rete per la 
cartella dove si trova il file di prova be niente da fare quando provo 
la connessione mi da errore "apertura database fallita". Dove sbaglio?


Fortunatamente non sono proprio stupito ho provato con l'indirizzo ip ed 
ha funzionato. Dato che non ho mai programmato in sql se non utilizzando 
gli wizard di access, sai se c'ï¿œ una guida in rete che sia free, credo 
cmq che sarï¿œ un'impresa molto grande inserire le tabelle di access anche 
perchï¿œ sono tutte relazionate ed il rischio di perdere gli 
identificativi ï¿œ alto stavo pensando se delphi utilizza lo stesso 
database di firebird e forse migrare da access a delphi ï¿œ piï¿œ semplice.
Sto dicendo cavolate? Esiste un editor tipo msaccess per firebird ed in 
italiano migliori di ibexpert?

 italiano migliori di ibexpert?
Era per questo che piu' su ti ho consigliato di mantenere come nome del file 
database  una roba del tipo
192.168.1.1:C:\MIEIDATI\VIVA_JUVE.FDB
Perche' cosi facendo, tutte le postazioni avranno la stessa identica 
stringa, anche quella che contiene fisicamente i dati
La directory col db se vuoi puoi anche non condividerla, anzi e' molto 
meglio non condividerla, cosi nessuno puo' ravanarci dentro con effetti 
catastrofici
Per quanto riguarda Delphi, non credo sia piu' semplice da usare rispetto ad 
altri ambienti, ha altre qualita' come la produzione di eseguibili senza 
run-time ed una vera 'oggettivita'  pero' dal punto di vista della 
semplificazione non penso sia meglio
Per quanto riguard IbExpert e' semplicemente eccezzzionale, non so se sia il 
migliore di tutti gli altri, ma credo tu possa fare ben piu' di tutte le 
operazioni che ti sevirebbero di fare
Per dire, oltre a tutte le operazioni classiche di creazione db, tabelle, 
campi, ha la possibilita' di creare una db di test riempiendoti di dati il 
tuo db appena creato, oppure puoi creare in automatico delle stored 
procedure per loggare l'attivita' del db su delle tabelle specifiche, che 
ovviamente puoi leggere
Cosa l'e' che non riesci a fare?
Ciao
RobertoA

> forse migrare da access a delphi ï¿œ piï¿œ semplice.

non ho motivo di dubitare della bontï¿œ di di ibexpert il mio problema ï¿œ 
che non devo iniziare un nuovo database ma devo convertirne un altro e 
la programmazione in sql non la conosco

 programmazione in sql non la conosco
E se non la conosci, vedi di conoscerla
E' come dire "devo prendere una macchina ma non so portarla"
Devi imparare, non c'e' altro da fare, e per di piu' so quattro acche messe 
in croce
Ciao
RobertoA 


Sicuramente sarï¿œ il prossimo passo anche perchï¿œ sarebbe stato tutto 
inutile aver organizzato la rete con firebird. Mi cercherï¿œ una guida per 
utilizzarlo. IO parlado di delphi alo solo scopo di convertire le 
tabelle access.