在没有标题的C#Windows应用程序中将csv文件导入SQL Server数据库

我试图将.csv文件导入没有标题的SQL Server数据库。

这段代码工作正常,但有标题 – 如何跳过标题? 我需要更改代码以忽略.csv文件中的标头?

谢谢你们。

CSV文件格式:

 001,0000002226,01,2011/03/27,07:07, 001,0000009392,01,2011/03/27,07:12, 001,0000002220,01,2011/03/27,07:17, 001,0000002121,01,2011/03/27,07:19, 

C#代码:

 private void btnBrowse_Click(object sender, EventArgs e) { OpenFileDialog ofd = new OpenFileDialog(); ofd.DefaultExt = ".csv"; ofd.Filter = "Comma Separated (*.csv)|*.csv" ; ofd.ShowDialog(); txtFileName.Text = ofd.FileName; } private void btnClose_Click(object sender, EventArgs e) { this.Close(); } private void btnimport_Click(object sender, EventArgs e) { Cursor = Cursors.WaitCursor; DataTable imported_data = GetDataFromFile(); if (imported_data == null) return; SaveImportDataToDatabase(imported_data); MessageBox.Show("load data succ.....!"); txtFileName.Text = string.Empty; Cursor = Cursors.Default; } private DataTable GetDataFromFile() { DataTable importedData = new DataTable(); try { using (StreamReader sr = new StreamReader(txtFileName.Text)) { string header = sr.ReadLine(); if (string.IsNullOrEmpty(header)) { MessageBox.Show("no file data"); return null; } string[] headerColumns = header.Split(','); foreach (string headerColumn in headerColumns) { importedData.Columns.Add(headerColumn); } while (!sr.EndOfStream) { string line = sr.ReadLine(); if (string.IsNullOrEmpty(line)) continue; string[] fields = line.Split(','); DataRow importedRow = importedData.NewRow(); for(int i = 0; i < fields.Count(); i++) { importedRow[i] = fields[i]; } importedData.Rows.Add(importedRow); } } } catch (Exception e) { Console.WriteLine("the file could not be read:"); Console.WriteLine(e.Message); } return importedData; } private void SaveImportDataToDatabase(DataTable imported_data) { using (SqlConnection conn = new SqlConnection("Data Source=HA-PC\\SQLEXPRESS;Initial Catalog=mydatabase;Integrated Security=True")) { conn.Open(); foreach (DataRow importRow in imported_data.Rows) { SqlCommand cmd = new SqlCommand("INSERT INTO imported_data (device_id, employee_id, status, date, time) " + "VALUES (@device_id, @employee_id, @status, @date, @time)", conn); cmd.Parameters.AddWithValue("@device_id", importRow["device_id"]); cmd.Parameters.AddWithValue("@employee_id", importRow["employee_id"]); cmd.Parameters.AddWithValue("@status", importRow["status"]); cmd.Parameters.AddWithValue("@date", importRow["date"]); cmd.Parameters.AddWithValue("@time", importRow["time"]); cmd.ExecuteNonQuery(); } } } 

你可以删除列并使用索引吗? 当然,您需要知道文件中每个字段的位置。

  string line = "001,0000002226,01,2011/03/27,07:07,"; DataTable importedData = new DataTable(); DataRow importedRow = importedData.NewRow(); string[] fields = line.Split(','); for (int i = 0; i < fields.Count(); i++) { importedRow[i] = fields[i]; } using (SqlConnection conn = new SqlConnection("Data Source=HAIDER-PC\\SQLEXPRESS;Initial Catalog=mydatabase;Integrated Security=True")) { conn.Open(); foreach (DataRow importRow in importedData.Rows) { SqlCommand cmd = new SqlCommand("INSERT INTO imported_data (device_id,employee_id,status,date,time ) " + "VALUES (@device_id,@employee_id,@status,@date,@time)", conn); cmd.Parameters.AddWithValue("@device_id", importRow[0]); cmd.Parameters.AddWithValue("@employee_id", importRow[1]); cmd.Parameters.AddWithValue("@status", importRow[2]); cmd.Parameters.AddWithValue("@date", importRow[4]); cmd.Parameters.AddWithValue("@time", importRow[5]); cmd.ExecuteNonQuery(); } } 

从文件中读取数据时,只需忽略标题。 删除这些行:

 string[] headerColumns = header.Split(','); foreach (string headerColumn in headerColumns) { importedData.Columns.Add(headerColumn); }