Importare dati da un File Testo

lunedì 23 aprile 2007 - 16.36

KappaKappa2 Profilo | Newbie

Salve a tutti. Spero di riuscire a trovare risposta.
Ho un file da importare in una tabella Sql. Peccato che il mio file è del tipo:

campo1 = valore
campo2 = valore
...
campon = valore

campo1 = valore
campo2 = valore
...
campon = valore

cioè il mio record è composto da n campi ognuni su una riga.
Ho usato il DTS ma non mi permette grandi trasformazioni.
Cosa mi consigliate?
Stored procedure ? Script ?

Grazie
KK

lbenaglia Profilo | Guru

>Ho un file da importare in una tabella Sql. Peccato che il mio
>file è del tipo:
>
>campo1 = valore
>campo2 = valore
>...
>campon = valore
>
>campo1 = valore
>campo2 = valore
>...
>campon = valore
>
>cioè il mio record è composto da n campi ognuni su una riga.

Ciao KK,

ma chi ha prodotto un file in un formato così "fantasioso"?

>Ho usato il DTS ma non mi permette grandi trasformazioni.
>Cosa mi consigliate?
>Stored procedure ? Script ?
Puoi ricorrere ad un ActiveX Script Task e scrivere una procedura vbs che parsa il file generandone uno in formato tabellare, con un separatore di colonna "classico" (come il punto e virgola o il TAB) e un CRLF come separatore di riga.
A questo punto puoi usare un Bulk Insert Task per importare il nuovo file.

>Grazie
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

KappaKappa2 Profilo | Newbie

Il File è generato da un'altra applicazione e non posso toccarlo. Se devo creare uno script che mi genera un altro file formattato nel modo corretto, a questo punto lo script può direttamente prendere i dati e metterli nella tabella.

Il problema è che se devo scrivere uno script tramite il DTS, non so come fare nel senso che esistono già variabili locali che mi danno la connessione e/o tabelle, oppure devo crearmi un oggetto connection, recordset etc. etc. ? Come si fa'?

Invece se io importo il file in una tabella così com'è, ottengo una tabella con 2 colonne. Posso tramite stored prendere i dati di questa tabella e scriverli in un altra formattando i dati? Come si fa'?

Per le mie conoscenze di sql / stored /DTS (= 0) è proprio questo il problema, non so come scrivere una stored, o reperire impostare un script senza creare ulteriori connessioni e giri di peppe.

Grazie KK

lbenaglia Profilo | Guru

>Il File è generato da un'altra applicazione e non posso toccarlo.
>Se devo creare uno script che mi genera un altro file formattato
>nel modo corretto, a questo punto lo script può direttamente
>prendere i dati e metterli nella tabella.
Dipende da come hai intenzione di importarlo
Una operazione bulk (bcp.exe, BULK INSERT e Bulk Insert Task) ti permette di importare milioni di righe in un baleno, mentre una eventuale applicazioncina che "prende i dati e li importa" ci impiegherebbe un tempo 1000 (almeno) volte superiore (facendo pure esplodere il t-log)

>Il problema è che se devo scrivere uno script tramite il DTS,
>non so come fare nel senso che esistono già variabili locali
>che mi danno la connessione e/o tabelle, oppure devo crearmi
>un oggetto connection, recordset etc. etc. ? Come si fa'?
Mi sembra di capire che non conosci i DTS... Il loro funzionamento non si spiega in un post, ti suggerisco di leggere attentamente i Books Online. Un'altra fonte di informazioni può essere il sito http://www.sqldts.com

>Invece se io importo il file in una tabella così com'è, ottengo
>una tabella con 2 colonne. Posso tramite stored prendere i dati
>di questa tabella e scriverli in un altra formattando i dati?
>Come si fa'?
Questa soluzione non la considero nemmeno dato che dovresti fare i salti mortali per parsare le righe con le (inefficienti) funzioni stringa offerte dal linguaggio SQL...

>Per le mie conoscenze di sql / stored /DTS (= 0) è proprio questo
>il problema, non so come scrivere una stored, o reperire impostare
>un script senza creare ulteriori connessioni e giri di peppe.
Eh... cosa vuoi che ti dica? Qui non si tratta di un problema specifico da risolvere, ma di imparare a conoscere SQL Server...

>Grazie KK
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

Mato Profilo | Newbie

due domande:

1) c'e l'hai la tabella con le due colonne??

2) n è sempre lo stesso???

ciò che penso così è
Msn Contact : n.g.red@hotmail.it
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5