Bước đầu tiên là đọc tệp CSV và giữ các bản ghi dưới dạng tệp DataTable
. Bước
thứ 2 là lưu trữ DataTable
dữ liệu được truy xuất vào Bảng cơ sở dữ liệu SQL dưới dạng Mục nhập hàng loạt
Đây là một hàm trả về Dữ liệu Tệp CSV dưới dạng DataTable
. Gọi và Giữ nó trong bộ nhớ và bạn có thể làm bất cứ điều gì bạn muốn với nó.
Hàm này sẽ trả về tệp CSV Read vào DataTable.
private static DataTable GetDataTabletFromCSVFile(string csv_file_path)
{
DataTable csvData = new DataTable();
try
{
using(TextFieldParser csvReader = new TextFieldParser(csv_file_path))
{
csvReader.SetDelimiters(new string[] { "," });
csvReader.HasFieldsEnclosedInQuotes = true;
string[] colFields = csvReader.ReadFields();
foreach (string column in colFields)
{
DataColumn datecolumn = new DataColumn(column);
datecolumn.AllowDBNull = true;
csvData.Columns.Add(datecolumn);
}
while (!csvReader.EndOfData)
{
string[] fieldData = csvReader.ReadFields();
for (int i = 0; i < fieldData.Length; i++)
{
if (fieldData[i] == "")
{
fieldData[i] = null;
}
}
csvData.Rows.Add(fieldData);
}
}
}
catch (Exception ex)
{
return null;
}
return csvData;
}
}
SQLBulkCopy - Sử dụng chức năng này để chèn DataTable Đã truy xuất vào Bảng Sql
static void InsertDataIntoSQLServerUsingSQLBulkCopy(DataTable csvFileData)
{
using(SqlConnection dbConnection = new SqlConnection("Data Source=ProductHost;Initial Catalog=yourDB;Integrated Security=SSPI;"))
{
dbConnection.Open();
using (SqlBulkCopy s = new SqlBulkCopy(dbConnection))
{
s.DestinationTableName = "Your table name";
foreach (var column in csvFileData.Columns)
s.ColumnMappings.Add(column.ToString(), column.ToString());
s.WriteToServer(csvFileData);
}
}
Bài viết liên quan: Cách xuất file csv từ list object sử dụng c#
Nguồn: stackoverflow.com