Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 32

Discussione: 15000 query!

  1. #1

    15000 query!

    Ciao ragazzi,
    ho un problema.
    Devo importare 15.000 record alla volta da file di testo e portarli in un db ( e questo ogni giorno... a volte anche di più )

    Devo per forza fare 15.000 insert?

    Considerate che Access per 3000 insert ci mette 13 secondi ( SQL SERVER 7 secondi )!
    Il problema è che a questi va aggiunto il tempo per fare dei calcoli!

    Non esiste un modo per inserire un file di testo in blocco in Access via codice?

    Lo so che non esiste ma se c'è una scorciatoia mi farebbe piacere saperlo!

    Ciao!

  2. #2
    Si potrebbe sfruttare l'importazione guidata di Access via codice?

  3. #3
    Utente di HTML.it L'avatar di longline
    Registrato dal
    Sep 2001
    Messaggi
    5,363
    Cerca TransferText nella guida di Access!

  4. #4
    per la sintassi dell insert puoi anche fare così

    codice:
    sql = insert into tabella (campo) values ("
    for i =1 to 15000
       sql = sql & "'valore', "
    next i
    sql = left$(sql,len(sql) -2) & ")"
    così con una sola transazione inserisci 15000 record
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

  5. #5
    Il numero dei valori nella query non corrisponde ai campi di destinazione...

  6. #6
    Potreste darmi inoltre un esempio d'uso con TransferText tramite VB?

  7. #7
    Utente di HTML.it L'avatar di longline
    Registrato dal
    Sep 2001
    Messaggi
    5,363
    Originariamente inviato da xegallo
    per la sintassi dell insert puoi anche fare così

    codice:
    sql = insert into tabella (campo) values ("
    for i =1 to 15000
       sql = sql & "'valore', "
    next i
    sql = left$(sql,len(sql) -2) & ")"
    così con una sola transazione inserisci 15000 record
    Veramente qui stai cercando di creare un record con 15000 campi...
    Dovresti fare così:
    codice:
    Dim db as DataBase
    Dim rs as DAO.RecordSet
    Dim rec as Integer
    
    Set db = CurrentDb
    Set rs = db.OpenRecordset("NomeTabella", dbOpenDynaset)
    
    For rec = 1 To 15000
      rs.AddNew
      rs!NomeCampo = rec
      rs.Update
    Next
    
    rs.Close
    db.Close
    Set rs = Nothing
    Set db = Nothing

  8. #8
    Utente di HTML.it L'avatar di longline
    Registrato dal
    Sep 2001
    Messaggi
    5,363
    Originariamente inviato da magnus
    Potreste darmi inoltre un esempio d'uso con TransferText tramite VB?
    Basta leggere la guida...

    Metodo TransferText


    Il metodo TransferText esegue l'azione TrasferisciTesto in Visual Basic. Per ulteriori informazioni sul funzionamento dell'azione e dei relativi argomenti, vedere l'argomento della Guida in linea relativo all'azione.

    Sintassi

    DoCmd.TransferText [tipotrasferimento][, nomefilespecifiche], nometabella, nomefile[, nomicampo][, nometabellaHTML][, tabellacodici]

    Il metodo TransferText utilizza gli argomenti riportati di seguito.

    Argomento Descrizione
    tipotrasferimento Una delle seguenti costanti intrinseche:
    acExportDelim
    acExportFixed
    acExportHTML
    acExportMerge
    acImportDelim (impostazione predefinita)
    acImportFixed
    acImportHTML
    acLinkDelim
    acLinkFixed
    acLinkHTML
    Se si omette questo argomento, viene utilizzata la costante predefinita (acImportDelim).
    Note È possibile collegarsi ai dati di un file di testo o di un file HTML ma tali dati risultano di sola lettura in Microsoft Access.
    In un progetto di Microsoft Access (ADP) sono supportati soltanto i tipi di trasferimento acImportDelim, acImportFixed, acExportDelim, acExportFixed o acExportMerge.

    nomefilespecifiche Espressione stringa che è il nome di una specifica di importazione o di esportazione creata e salvata nel database corrente.
    Per un file di testo a larghezza fissa, occorre specificare un argomento o utilizzare un file schema.ini, che deve essere memorizzato nella stessa cartella del file importato, collegato o esportato. Per creare un file schema, è possibile utilizzare l'Importazione o l'Esportazione guidata. Per i file di testo delimitati e i file di dati di stampa unione, è possibile omettere questo argomento per selezionare le specifiche predefinite di importazione o esportazione.
    nometabella Espressione stringa che è il nome della tabella di Microsoft Access nella quale si desidera importare, dalla quale si desidera esportare o alla quale si desidera collegare dati di testo, oppure della query di Microsoft Access i cui risultati si desidera esportare in un file di testo.
    nomefile Espressione stringa che è il nome completo, compreso il percorso, del file di testo dal quale si vuole importare, al quale si vuole esportare o collegare dati.
    nomicampo Utilizzare True (-1) per utilizzare la prima riga del file di testo come nomi di campo nell'importazione, nell'esportazione o nel collegamento. Utilizzare False (0) se si desidera che i dati della prima riga del file di testo siano considerati come dati normali. Se si omette questo argomento, viene utilizzata l'impostazione predefinita (False).
    Questo argomento viene ignorato nei file di dati di stampa unione di Microsoft Word per Windows, che devono sempre contenere nella prima riga i nomi dei campi.
    nometabellaHTML Espressione stringa che è il nome della tabella o dell'elenco nel file HTML che si desidera importare o a cui si desidera collegarsi. Questo argomento viene ignorato a meno che l'argomento tipotrasferimento sia impostato a acImportHTML o acLinkHTML. Se si omette questo argomento, viene importata o collegata la prima tabella del file HTML.
    Il nome della tabella o dell'elenco nel file HTML viene determinato dal testo specificato dal tag <CAPTION>, qualora esista. Se non esiste, il nome viene determinato dal testo specificato dal tag <TITLE>. Se vi sono più tabelle o elenchi con il medesimo nome, Microsoft Access le distingue aggiungendo un numero alla fine del relativo nome: ad esempio Impiegati1 e Impiegati2.
    tabellacodici Un valore di tipo Long indicante il set di caratteri della tabella codici.


    Osservazioni

    È possibile omettere un argomento facoltativo all'interno della sintassi, ma è necessario includere la virgola dell'argomento stesso. Se si omette un argomento finale, non utilizzare la virgola dopo l'ultimo argomento specificato.

    Nota È anche possibile utilizzare gli oggetti ADO per creare un collegamento tramite la proprietà ActiveConnection per l'oggetto Recordset.

    Esempio di metodo TransferText

    Nell'esempio riportato di seguito viene indicato come esportare i dati della tabella Report Esterno di Microsoft Access nel file di testo delimitato Aprile.doc, utilizzando la specifica 'Output standard'.

    DoCmd.TransferText acExportDelim, "Output standard", "Report esterno", "C:\FileTxt\Aprile.doc"

  9. #9
    Ma così sarebbe ancora più lento che fare 15000 query!

  10. #10
    Originariamente inviato da xegallo
    per la sintassi dell insert puoi anche fare così

    codice:
    sql = insert into tabella (campo) values ("
    for i =1 to 15000
       sql = sql & "'valore', "
    next i
    sql = left$(sql,len(sql) -2) & ")"
    così con una sola transazione inserisci 15000 record
    Errore di sintassi?

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.