Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    4

    Importazione in ACCESS di un file txt delimitato via SQL

    Salve a tutti voi.
    Qualcuno di voi ha idea di come fare ad importare un file in un database ACCESS?
    La cosa è assolutamente banale su ASA (Adaptive Server Anywhere) e su ASE (Adaptive Server Enterprise) di SYBASE, ma risulta veramente farraginosa su ACCESS. Mi spiego meglio.
    Importare un file EXCEL è relativamente semplice:

    INSERT INTO nometabella SELECT * FROM [nomefoglio$] IN 'filename' 'EXCEL 5.0;'

    Devo importare i dati da un file di testo delimitato (proveniente da sistema UNIX ma con standard ASCII DOS); e qui casca l'asino!!

    Sebbene la guida di ACCESS parli con 'tono' di ovvietà, non esiste un solo esmpio di importazione di file testo via SQL; la qual cosa mi fa seriamente dubitare che sia possibile (a dispetto di quanto dichiarato sulla guida). Ho seguito la falsa riga dell'istruozione di cui sopra, sostituendo alla specifica del driver EXCEL una scritta del tipo TEXT (del tutto inutilmente).
    Per tutta risposta il parser SQL di ACCESS mi ritorna errori del tipo 'pathname errato' (cosa ASSOLUTAMENTE non vera!!).

    Avete idee in merito? Per me il problema è assolutamente pressante, ma sono certo che sarete pronti a darmi una mano.
    Inoltre sono a disposizione per qualsiasi chiarimento in merito a SQL avanzato ed importazioni varie. Mi potete raggiungere o qui nel forum, oppure scrivendo a giovanni@websoft.it

    Grazie ancora... via aspetto.
    Giovanni Pulvirenti


  2. #2
    Premetto che non ho la soluzione completa. E' un inizio di ragionamento.

    La sintassi puo' essere tipo questa:

    INSERT INTO tabella SELECT * FROM [filename.txt] IN 'C:\' 'TEXT;'

    Infatti ADO assimila la cartella al database, e il file alla tabella.

    Questo puo' essere un punto di partenza.

    Fammi sapere, perche' se questo funzia io ho un problema un po' piu' a valle.

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    4

    caro 'dicesare', FUNZIA!!

    Ciao 'dicesare',
    è un piacere conoscerti!!
    La tua dritta mi è stata risolutiva. Era in effetti un po' strano riuscire ad importare da excel e non da un file di testo...
    Dalla tua risposta leggo che un problema... dimmi pure e se posso ti darò una mano.

    Grazie ancora e a presto...

    PS.
    Mi chiamo Giovanni Pulvirenti e sono un programmatore socio in WEBSOFT s.r.l. azienda di sviluppo prevalentemente 'WEB' - http://websoft.it - Conosco PowerBuilder, Visual Basic, database SYBASE (ASA/ASE, quest'ultimo di meno), OFFICE (word/excel/access), ASP (VBScript).
    Se ti posso essere di aiuto...

  4. #4
    per il contatto... si puo' fare, in privato, chiaramente.

    per il problema, forse e' meglio aprire un altro thread

  5. #5
    Utente di HTML.it L'avatar di kumm
    Registrato dal
    Jun 2000
    Messaggi
    190

    x celeron

    Scusa.. ho visto ke hai molta dimestikezza nell'importare dati in Access.... e io devo importare un file di testo generato da un AS400...

    Com'era quella sintassi ke usavi?
    INSERT INTO nometabella SELECT * FROM [nomefoglio$] IN 'filename' 'EXCEL 5.0;'

    Potresti spiegarmela un pò? Praticamente dovrei scrivere
    INSERT INTO tab_utenti SELECT * FROM [f_utenti] IN 'utenti.xls' 'EXCEL 5.0;'

    dove tab_utenti è la tabella in Access, f_utenti è il foglio del file utenti.xls ??? Allora 'EXCEL 5.0;' a ke serve??

    Questo è molto utile nei file *.xls, ma nei file *.txt come fai??
    Come distingui (e dai un nome) a i campi in un file *.txt??

    grazie anticipatamente....

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    4

    Sintassi per importare un foglio EXCEL in ACCESS

    Salve Kumm, piacere di conoscerti.
    La sintassi da utilizzare nell'importazione di un file EXCEL è la seguente:

    INSERT INTO NomeTabella
    SELECT *
    FROM [nomefoglio$] IN 'pathcompletodifile'[EXCEL 5.0;];

    dove NomeTabella è la tabella da aggiornare, nomefoglio$ è il nome del foglio di EXCEL, pathcompletodifile è il pathname relativo al SERVER (MOLTO IMPORTANTE!!!).

    Nel tuo caso:
    INSERT INTO Tab_Utenti
    SELECT *
    FROM [f_utenti] IN 'C:\InetPub\wwwroot\files\utenti.xls'[EXCEL 5.0;]

    Ovviamente il percorso è esemplificativo...
    La scritta EXCEL 5.0 indica ad ACCESS il driver che deve utilizzare.
    Il foglio excel deve avere per ogni colonna usata nella prima riga il nome del campo così come è in ACCESS!!

    Per un file di testo usa questo:
    INSERT INTO NomeTabella
    SELECT * ---> nessun elenco dei campi!!!!
    FROM nomefile.txt IN 'pathsenzafile'[TEXT;];

    Come sopra, ma non puoi specificare quale campo importare.

    Questo è tutto. Fammi sapere se è tutto a posto.
    Puoi scrivermi privatamente a giovanni@websoft.it

    Ciao

  7. #7
    Utente di HTML.it L'avatar di kumm
    Registrato dal
    Jun 2000
    Messaggi
    190

    sei gentilissimo

    appena avrò il tempo di provare quanto detto ti farò sapere...

    Un'ultima cosa.... il file txt deve essere del tipo:


    Ivan Mazzola 28 Roma
    Walter Bruno 32 Firenze
    Pamela Zeno 19 Torino


    ed utilizzando la sintassi ke mi hai detto si riempie una tabella di Access con i campi NOME COGNOME ETA CITTA?

    Ovvero: ogni riga è un record e gli spazi delimitano i campi?

  8. #8
    Utente di HTML.it L'avatar di kumm
    Registrato dal
    Jun 2000
    Messaggi
    190
    Non riesco a farlo funzionare...
    Mi dice che i campi di destinazione non corrispondono!

    Come deve essere fatto il file txt??
    Non dovrebbe avere dei "delimitatori di campo" ???
    Puoi farmi un esempio del file txt??

    grazie...

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    4
    Salve Kumm,
    il file che io ho importato con successo era un file DELIMITATO (virgola, punto e virgola, tabulazione, pipe: questi i delimitatori più utilizzati) e non un file LARGHEZZA FISSA separata da uno spazio.
    In effetti quest'ultimo tipo di files sono tipici di applicazioni per sistemi quali UNIX, AS400 e altri; nel nostro caso WIN 9.X, 2000 ecc. è più facile imbattersi in file DELIMITATI.
    Assicurati dunque che il file sia di tipo:
    Mario,Rossi,30
    Luca,Bianchi,35

    oppure

    "Mario","Rossi","30"
    "Luca","Bianchi","35"

    dove i doppi apici delimitano il contenuto del campo, così che siano supportate le virgole al loro interno. Infatti come interpreteresti questo?

    Mario,Rossi,30,via degli aceri,30
    Luca,Bianchi,35,via Garibaldi,120

    Questo invece è corretto:

    "Mario","Rossi","30","via degli aceri,30"
    "Luca","Bianchi","35","via Garibaldi,120"

    Verificato tutto ciò, assicurati che i campi nella tabella di ACCESS siano stati preparati rispettando il tipo di dato richiesto dal contenuto del file per ogni campo. Inoltre il numero dei campi nella e quelli nel file deve coincidere..

    Se non dovesse ancora funzionare, prova ad eliminare le virgole contenute nel file dati (non quelle che delimitano eventualmente i campi, ma quelle contenute in essi), sostituendole con punti (puoi utilizzare il NOTEPAD--->trova/sostituisci).

    Alla fine dovresti riuscirci.
    Fammi sapere.
    Ciao.
    Giovanni

  10. #10
    Utente di HTML.it L'avatar di kumm
    Registrato dal
    Jun 2000
    Messaggi
    190
    6 stato veramente gentile....
    grazie per l'aiuto!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.