Мне нужно импортировать файл CSV в таблицу SQL Server.
В CSV есть 8 столбцов, и 2 из них являются значениями даты и времени.
В моей таблице SQL есть столбец, в котором хранитсяразница между двумя столбцами файла CSV.
Я не могу проверить, пуста ли ячейка или нет.
Мой код следующий:
protected void btnImport_Click(object sender, EventArgs e)
{
string csvPath = Server.MapPath("~/Files/") + Path.GetFileName(FileUpload1.PostedFile.FileName);
FileUpload1.SaveAs(csvPath);
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[8] { new DataColumn("basid", typeof(string)),
new DataColumn("EmployeeName", typeof(string)),
new DataColumn("Designation",typeof(string)),
new DataColumn("OfficeLocation",typeof(string)),
new DataColumn("Division",typeof(string)),
new DataColumn("Intime",typeof(DateTime)),
new DataColumn("Outtime",typeof(DateTime)),
new DataColumn("timedifference",typeof(DateTime))
});
string csvData = File.ReadAllText(csvPath);
foreach (string row in csvData.Split('\n'))
{
if (!string.IsNullOrEmpty(row))
{
dt.Rows.Add();
int i = 0;
foreach (string cell in row.Split(','))
{
if (i == 7)
{
dt.Rows[dt.Rows.Count - 1][i] = ((DateTime)(dt.Rows[dt.Rows.Count - 1][i - 1]) - (DateTime)(dt.Rows[dt.Rows.Count - 1][i - 2]));
}
else {
dt.Rows[dt.Rows.Count - 1][i] = cell;
}
i++;
}
}
}
string consString = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
using (SqlConnection con = new SqlConnection(consString))
{
using (SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(con))
{
//Set the database table name.
sqlBulkCopy.DestinationTableName = "dbo.basids";
con.Open();
sqlBulkCopy.WriteToServer(dt);
con.Close();
}
}