Upload CSV file to SQL Server using FileUpload, CsvDataReader, and
SqlBulkCopy in .Net 2.0
http://www.csvreader.com/csv_samples.php
http://groups.google.com/group/CSVChat/browse_frm/thread/ef3453b906600cf1
http://groups.google.com/group/CSVChat/browse_frm/thread/731fb967d8837c2c
http://groups.google.com/group/CSVChat/browse_frm/thread/38ad567dceea62db
Bruce Dunwiddie
id,user
1,bruce
2,bob
I've got a table defined by this:
CREATE TABLE [user] (
[id] [int] NOT NULL ,
[user] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
) ON [PRIMARY]
And here's the code:
Imports System.Data.SqlClient
Imports System.IO
Imports System.Text
Imports DataStreams.Csv
Partial Class _Default
Inherits System.Web.UI.Page
Protected Sub UploadButton_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles UploadButton.Click
If FileUpload.PostedFile.FileName.Length > 0 Then
Dim count As Integer
Dim dataBuffer(1024) As Byte
Dim dataHolder As New MemoryStream
Using FileUpload.PostedFile.InputStream
Do
count =
FileUpload.PostedFile.InputStream.Read(dataBuffer, 0,
dataBuffer.Length)
dataHolder.Write(dataBuffer, 0, count)
Loop While count > 0
End Using
Session("uploadedData") = dataHolder.ToArray
Using reader As CsvReader = New CsvReader(New
MemoryStream(CType(Session("uploadedData"), Byte())), Encoding.Default)
Grid.DataSource = reader.ReadToEnd(True)
End Using
ImportButton.Enabled = True
Grid.Visible = True
Grid.DataBind()
End If
End Sub
Protected Sub ImportButton_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles ImportButton.Click
Using bulkCopy As New SqlBulkCopy("Data Source=.;Initial
Catalog=pubs;Persist Security Info=True;User ID=sa;Password=")
Using dataReader As New CsvDataReader(New
MemoryStream(CType(Session("uploadedData"), Byte())), Encoding.Default)
dataReader.Settings.HasHeaders = True
dataReader.Columns.Add("int", "id")
dataReader.Columns.Add("varchar", "user")
bulkCopy.DestinationTableName = "[user]"
bulkCopy.WriteToServer(dataReader)
End Using
End Using
Session.Remove("uploadedData")
Grid.Visible = False
ImportButton.Enabled = False
End Sub
End Class
This will temporarily save the file to session state while the data is
displayed. Let me know what questions you have from here.
Bruce Dunwiddie