File ASCII -> DataTable

mercoledì 01 dicembre 2004 - 09.01

secks Profilo | Senior Member

Ho la necessità di trasferire un file ASCII di grosse dimensioni ( 5 MegaByte ) in una tabella in memoria ( DataTable ) oppure in una tabella SQL 2000.
Come posso fare?

Ciao e tutti e grazie.
Paolo.

Brainkiller Profilo | Guru

Ci sono varie opportunità.
Non ti consiglio di trasferirla in una DataTable in un DataSet perchè occuperebbe parecchia memoria.

Le soluzioni migliori sono usare i DTS di SQL Server e usare il Wizard di importazione che ti permette di importare direttamente sulle tabelle dati provenienti da qualsiasi fonte dati, excel, oracle, ascii, ecc.

Oppure usare l'utilità bcp.exe sempre con SQL Server che più o meno fa la stessa cosa ma in maniera più efficente ma è più difficile da usare.

Oppure ancora manualmente leggere il file riga pre riga ed effettuare delle insert su DB.

ciao
david

secks Profilo | Senior Member

Mi sembrava di aver letto da qualche parte che si puo' fare mediante un comando SQL, ma forse mi sbaglio. Il comando DTS e molto efficace ma poi bisogna gestirlo ne caso vengano modificati i tracciati. Cercavo dei comandi gestibili direttamente da codice, se ci sono.

Grazie e ciao.
Paolo.

Brainkiller Profilo | Guru

Intendi importare un file ASCII con un comando SQL ?

ciao
david

secks Profilo | Senior Member

Si, mi sembra di aver letto qualcosa del genere da qualche parte. Appena ho un po' di tempo faccio delle ricerche e divulgo.

Ciao e grazie.
Paolo.

Steve71 Profilo | Newbie

Ecco un bel regalo per te da Babbo Natale!
L'ho scritta proprio un paio di giorni fa per un'esigenza simile alla tua:

Public Shared Function CsvToDataTable(ByVal fullFileName As String) As DataTable

Dim cnString As New StringBuilder
cnString.Append("Driver={Microsoft Text Driver (*.txt; *.csv)};")
cnString.AppendFormat("DBQ={0};", System.IO.Path.GetDirectoryName(fullFileName))

Dim cmd As New OdbcCommand
Dim cn As New OdbcConnection(cnString.ToString)

Try

cmd.CommandText = "SELECT * FROM " & GetFileName(fullFileName)
cmd.Connection = cn

Dim dt As New DataTable
Dim da As New OdbcDataAdapter(cmd)

da.Fill(dt)

Return dt

Catch ex As Exception

' Scrivo l'errore in un file di Log
LogWriter("ERROR while importing CSV to DataTable" & vbCrLf & _
vbTab & "Msg: " & ex.Message & vbCrLf & _
vbTab & "Msg: " & ex.Source)

Finally

cn.Close()

End Try

End Function

Steve71 Profilo | Newbie

Ah, dimenticavo gli Imports da usare:

Imports System.IO.Path
Imports System.Data.Odbc
Imports System.Text

CIAO!
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