Autore Topic: Importare dati di access  (Letto 3185 volte)

Offline Lux

  • Maestro Gambero
  • ****
  • Post: 416
    • Mostra profilo
Importare dati di access
« il: 10 Ottobre 2010, 16:45:16 »
Ciao a tutti! Credo che la risposta sia no, comunque faccio ugualmente la domanda: è possibile importare dati da database microsoft access?

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.482
    • Mostra profilo
Re: Importare dati di access
« Risposta #1 il: 10 Ottobre 2010, 17:34:23 »
mi pare di si , però non avendo alcun db access non ho mai provato :)

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.273
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: Importare dati di access
« Risposta #2 il: 10 Ottobre 2010, 18:23:24 »
Io tempo fa ho dovuto risolvere il tuo stesso problema...  :hatecomputer: :hatecomputer:
L'ho risolto usando le librerie odbc di database mdb per linux...

Premessa: in gambas la connessione via odbc funziona solo in architetture a 32 bit... tempo fa avevamo, io e Leo, fatto presente a benoit che gambas andava in crash usando driver odbc con architetture a 64 bit, ma il problema non e' ancora stato risolto.

Prima di tutto bisogna installarsi due pacchetti:

unixodbc-bin (interfaccia grafica per settare driver odbc)
libmdbodbc (driver odbc per database access)

poi, da un terminale, dare

sudo ODBCConfig

e andare successivamente nella sezione Driver.
Schiaccia il tasto Add... poi scegli un nome per il nuovo driver (uno qualsiasi es. dbAccess) e selezionare il percorso ove si trova suddetto driver nella textbox Driver
il percorso del driver installato dovrebbe essere:
/usr/lib/libmdbodbc.so.0
copiare lo stesso indirizzo nella sezione Setup e salva (bottone spuntato in alto a sinistra)

poi vai nella sezione System DNS e schiaccia su Add...
seleziona il driver appena creato e schiaccia su ok
In questa fase darai il nome della connessione (in gambas sarà la proprietà connection.host) e il percorso del database mdb.

Per fare un test di connessione puoi accedere al db, da terminale, tramite il programma isql (già siduramente installato nel tuo sistema) digitando:

isql <nome connessione>

se il programma si avvia, la connessione è andata a buon fine...(per uscire da isql digita exit)

In gambas setterai la connection in questo modo:

Private MiaCon as New Connection

Public Sub Form_Open()

  With MiaConn
    .Type = "odbc"
    .Host = "<nome connessione>"
    .User = "admin"
  End With

End

Dovrai anche settare l'user a "admin" perchè ho visto che se non dai l'user in pasto alla connessione gambas va in crash. Solitamente in access l'amministratore del db è sempre admin...

Questo è il metodo che uso io, sicuramente ce ne saranno altri ma in questo modo avrai imparato anche ad usare odbc su linux ;)


Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re: Importare dati di access
« Risposta #3 il: 10 Ottobre 2010, 18:49:18 »
Io non avevo tantissimi dati, e ho risolto esportanto in CSV e riversato in mysql

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.273
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: Importare dati di access
« Risposta #4 il: 10 Ottobre 2010, 20:44:45 »
Io non avevo tantissimi dati, e ho risolto esportanto in CSV e riversato in mysql

Certo, è un metodo anche questo, pero' devi utilizzare Access... ;)

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
Re: Importare dati di access
« Risposta #5 il: 16 Ottobre 2010, 13:06:57 »
Io non avevo tantissimi dati, e ho risolto esportanto in CSV e riversato in mysql

Golia mi spieghi come hai fatto da access a creare oi cvs e poi ad importarli in Mysql?
ho un vecchio database in access e vorrei trasferirlo.

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re: Importare dati di access
« Risposta #6 il: 16 Ottobre 2010, 14:52:30 »
Da Access con una semplice macro "TrasferisciFogliodicalcolo" selezioni la tabella che vuoi esportare in un file XLS. Poi con Calc o Excel te lo salvi in CSV.
Una volta che hai il csv puoi usare le classi di MD9327 oppure per MySql puoi usare una semplice query. Ecco l'esempio
Codice: gambas [Seleziona]

DIM sql AS String  
   Dialog.Path = User.Home
   Dialog.Filter = ["*.csv", "file csv"]
   Dialog.Title = "Apri file csv"
   IF Dialog.OpenFile() THEN RETURN  
 sql = "LOAD DATA LOCAL INFILE '"
 sql &= Dialog.Path
 sql &= "' INTO TABLE miatabella FIELDS TERMINATED BY ';' enclosed by '' LINES TERMINATED BY '\n' (codice, descrizione, prezzo)"
 MODMain.$conn.Exec(sql)

Offline doublemm

  • Maestro Gambero
  • ****
  • Post: 445
    • Mostra profilo
Re: Importare dati di access
« Risposta #7 il: 09 Novembre 2010, 23:22:45 »
nella sezione download c'è un piccolo programma utile se hai tanti file xls da convertire in csv. se servono spiegazioni sono qui
Matteo DoubleMM Mion

Offline andy60

  • Senatore Gambero
  • ******
  • Post: 1.255
    • Mostra profilo
    • https://www.linkedin.com/in/andbertini
Re: Importare dati di access
« Risposta #8 il: 10 Novembre 2010, 07:29:40 »
due metodi:
1 quello di Golia...csv e poi mysql
2 riversi in foglio excel e poi importi con routine gambas

preferisco la prima, anke xche' di solito chi deve export da access ha access :P

Offline perseo

  • Maestro Gambero
  • ****
  • Post: 264
    • Mostra profilo
Re: Importare dati di access
« Risposta #9 il: 28 Novembre 2010, 15:30:57 »
Ciao milio,

vorrei usare il metodo di connessione del mio "vecchio" database ODBC che si chiama "mioODBC.mdb".

Ho seguito la tua guida ed ho installato i due pacchetti e poi configurato i driver come hai indicato.

Ho fatto anche la prova da terminale "isql nome_connessione" ed è andata in porto correttamente (ho anche eseguito una Query SQL che mi ha restituito dei record).

Poi però quando tento di connettermi da Gambas3 al suddetto DB Access... Gambas3 mi va in crash (restituendomi l'errore: il programma si è bloccato inaspettatamente con un segnale #11...)

Codice: vb.net [Seleziona]
Public Function connessioneODBC() As Result
Dim $Conn As New Connection
Dim sql As String
Dim hRis As Result

  With $Conn
    .Type = "odbc"
    .Host = "mioODBC" (ossia il nome che ho usato nella configurazione del System_DNS...)
    .User = "admin"
  End With

  $Conn.Open()
    $Conn.Begin

      sql = "SELECT * FROM mia_tabella"
      
      hRis = $Conn.EXEC(sql)

      If hRis.Available Then
        Print "La tabella esiste"
        Return hRis
      Endif
      
  $Conn.Close
End


Dove sbaglio?  ???

PS. Nei tanti tentativi di connessione alcune volte il programma non va in crash, però in "console" mi scrive "Error at Line : syntax error near BEGIN".  ???

PPS. Nel progetto ho spuntato sia il componente "gb.db" che il componente "gb.db.odbc".
« Ultima modifica: 28 Novembre 2010, 16:23:15 da perseo »

Offline perseo

  • Maestro Gambero
  • ****
  • Post: 264
    • Mostra profilo
Re: Importare dati di access
« Risposta #10 il: 28 Novembre 2010, 16:27:35 »
Dopo essermi ricollegato al DB da terminale ed essere uscito correttamente con l'istruzione "quit" il programma pare che non vada più in crash, però la console mi restituisce sempre lo stesso errore: "Error at Line : syntax error near BEGIN"  :hatecomputer:

PS. la mia Ubuntu10.04 è a 32 Bit (CPUArchitecture=i686).
« Ultima modifica: 28 Novembre 2010, 16:42:31 da perseo »

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.273
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: Importare dati di access
« Risposta #11 il: 28 Novembre 2010, 16:47:45 »
Togli il begin :)

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.273
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: Importare dati di access
« Risposta #12 il: 28 Novembre 2010, 17:17:35 »
Se non riesci puoi anche installarti un programma che si chiama MDB Viewer che ti permette di esportare in file csv...

Offline perseo

  • Maestro Gambero
  • ****
  • Post: 264
    • Mostra profilo
Re: Importare dati di access
« Risposta #13 il: 28 Novembre 2010, 18:04:47 »
Ho tolto il Begin e l'errore non compare più in concole... però, anche se la connessione ho verificato essere aperta con un $conn.opened che restituisce true, continua a non restituirmi alcun risultato.

MDB Viewer lo uso abitualmente... esporto tutti i record in formato csv o txt e poi popolo MySQL... Il fatto è che ho difficoltà con alcuni dati (tipo numeri e date)...

Comunque sia, in ufficio ho un macchinario che utilizza software proprietario che usa un dbAccess, e devo assolutamente creare una connessione per importare quotidianamente i suoi dati.