Đầu tiên, bạn không cần công cụ lập trình. Bạn có thể tải trực tiếp tệp CSV lên Cơ sở dữ liệu SQL bằng các công cụ quản lý SQL. Tuy nhiên, nếu bạn thực sự cần làm điều đó thông qua lập trình, chỉ cần đọc bên dưới.
Cá nhân tôi nghĩ cách tiếp cận này là cách hiệu quả nhất và dễ thực hiện nhất thông qua lập trình.
Nói chung, bạn có thể đạt được nó trong hai bước
1 bước là đọc tệp CSV và giữ các bản ghi dưới dạng DataTable
.
Thứ 2 bước là lưu trữ DataTable
đã 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à Lưu 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();
//Making empty value as null
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);
}
}
Nguồn