Reading, parsing and posting data from a .csv file into a SQL database asp.net
<p>I have the following data that basically I only need a few bits of information from:</p>

<blockquote>
  <p>Resource:X - Y;Z - Å;Type:(all) From Date:
  07/12/2010 - To Date 07/12/2010 Sort
  by:Time Include Referring
  source/physician:No Footer:Default
  Criteria:None
  ","Appointments","X,
  Y","ZAssociates","Monday, July 12,
  2010","Time","Patient Name","Patient
  ID","Appt. Type","Ref. Source/
  Physician","Phone","Type","DOB
  ","Z, X","Y","7/12/2010
  12:00:00AM","Time","Patient
  Name","Patient ID","Appt.
  Type","Phone","Type","DOB "," 7:30
  [snip]</p>
</blockquote>

<p>The only things I need from this are:</p>

<p>Patients Name</p>

<p>Drs Name</p>

<p>Patients Phone Number </p>

<p>Appt Time </p>

<p>Appt Date</p>

<p>and the rest of the information I can discard. A customer uploads this as a .csv file (even though it really isn't as you can see) and I'd like to parse the needed information and post that to my SQL database and discard the rest. I think I can do this with a dataset but I've never built that before. The fields from the customer will always be the same and the fields I will need will always be the same.</p>

<p>Also, the date time has to be in the format of yyyy/mm/dd:hhmm and the phone number always has to have 512 as a prefix. Here is the code I currently have for my site:</p>

<pre><code>Imports System.IO
Imports System.Data
Imports System.Data.SqlClient
Partial Class _Default
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

End Sub
Protected Sub Submit1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Dim SaveLocation = "\\xxxWEB3\wwwroot\Webfile1\Reminders\Doug_Ancil\doug.csv"
If UploadFile(SaveLocation) Then
'the file was uploaded: now try saving it to the database
SaveToDatabase(SaveLocation)
End If
End Sub
Private Function UploadFile(ByVal SavePath As String) As Boolean
Dim fileWasUploaded As Boolean = False 'indicates whether or not the file was uploaded

'Checking if the file upload control contains a file
If Not File1.PostedFile Is Nothing And File1.PostedFile.ContentLength &gt; 0 Then
Try
'checking if it was .txt file BEFORE UPLOADING IT!
'You used to upload it first...but the file could be a virus
If File1.FileName = ("doug.csv") = False Then
'The file is not the expected type...do not upload it
'just post the validation message
message.Text = "Sorry, thats not the correct file."
message2.Text = "Please locate and upload 'doug.csv'"
Else
'The file is a .txt file
'checking to see if the file exists already
'If it does exist Deleting the existing one so that the new one can be created
If IO.File.Exists(SavePath) Then
IO.File.Delete(SavePath)
End If

'Now upload the file (save it to your server)
File1.PostedFile.SaveAs(SavePath)

'After saving it check to see if it exists
If File.Exists(SavePath) Then
'Upload was sucessful
message.Text = "Thank you for your submission."
fileWasUploaded = True
Else
'the file was not saved
message.Text = "Unable to save the file."
End If
End If

Catch Exc As Exception
'We encountered a problem
  message.Text = "Your file was not in the correct format. Please contact Customer Service at xxxx-xxxx-xxxx."
End Try
Else
'No file was selected for uploading
message.Text = "Please select a file to upload."
End If
Return fileWasUploaded
End Function

Private Sub SaveToDatabase(ByVal SavePath As String)
Try
Dim sqlQueryText As String = _
"BULK INSERT dialerresults " + _
"FROM '" &amp; SavePath &amp; "' " + _
"WITH ( FIELDTERMINATOR = ',' , ROWTERMINATOR = '\n' )"


' and bulk import the data: 
'If ConfigurationManager.ConnectionStrings("Dialerresults") IsNot Nothing Then
'Dim connection As String = ConfigurationManager.ConnectionStrings("Dialerresults").ConnectionString
  Dim connection As String = "data source=10.2.1.40;initial catalog=IVRDialer;uid=xxxx;password=xxxxx;"

Using con As New SqlConnection(connection)
con.Open()
' execute the bulk import 
Using cmd As New SqlCommand(sqlQueryText, con)

cmd.ExecuteNonQuery()

End Using
End Using

'Else
'message.Text="ConfigurationManager.ConnectionStrings('Dialerresults') is Nothing!"
'End If
Catch ex As Exception
  message.Text = "Your file was not in the correct format. Please contact Customer Service at xxxxxxx."

End Try
End Sub

End Class
</code></pre>

<p>Thank you,</p>

<p>Doug </p>
