Import File CSV trong C# vào cơ sở dữ liệu (Import CSV File to Database) có nghĩa là lấy dữ liệu từ file CSV nhập vào cơ sở dữ liệu (Database).Hiện nay import file csv được sử dụng rất nhiều trong lập trình C# cho các ứng dụng phần mềm, Website…
Import file CSV vào cơ sở dữ liệu sử dụng ngôn ngữ C# được ứng dụng cho trường hợp bạn phải nhập hoặc xử lý với dữ liệu lớn, một dach sách dữ liệu lớn nhằm giúp tiết kiệm thời gian nhập liệu hoặc xử lý dữ liệu.
Trong trường hợp bạn cần nhập một danh sách sản phẩm khoảng 30000 sản phẩm thì cần thời gian khoảng 3 tuần mới nhập xong.Tuy nhiên nếu bạn đã có sẵn 1 file CSV của danh 30000 sản phẩm đó thì bạn có thể import file CSV trong C# chỉ mất khoảng 15 đến 20 giây.Vậy làm thế nào để import file CSV trong C# vào cơ sở dữ liệu ? Trong bài này chúng tôi sẽ hướng dẫn bạn viết code C# để import dữ liệu của file CSV vào trong cớ sở dữ liệu MSSQL Server.
Ví dụ yêu cầu bài toán của phần mềm là đọc dữ liệu từ file CSV sau đó lưu dữ liệu vào cơ sở dữ liệu và hiển thị dữ liệu từ cơ sở dữ liệu lên DataGridview.
Chúng ta sẽ cần xây dựng chương trình C# để import dữ liệu từ file CSV vào cơ sở dữ liệu (Database) như sau:
Tạo file CSV mà bạn cần import vào cơ sở dữ liệu với tên là : ImportCSV_Tem.csv
Nội dung file CSV như hình ảnh dưới đây:
Tạo bảng table : Product_t trong Database TestLuu
Nội dung bảng Product_t như sau:
Các bước tạo project import file csv C# như sau:
Giải thích:
+ Label: File Name
+ Textbox: txt_FilePath là để hiển thị đường dẫn của file excel
+ Button: import CSV File… là để chọn file excel
+ DataGridView : dt_List_Products là để hiển thị dữ liệu từ file excel.
+ openFileDialog1: là để chọn nơi lưu trữ file excel.
+ Thêm thư viện dưới đây vào source code
using System.IO;
using System.Data.SqlClient;
+ Viết code cho sự kiện click của nut button Import CSV File để đọc file csv và lưu dữ liệu vào cơ sở dữ liệu và sau đó hiển thị dữ liệu lên DataGridView.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using System.Data.SqlClient;
namespace ImportCSV_CSharp
{
public partial class frm_ImportCSV_CSharp : Form
{
public frm_ImportCSV_CSharp()
{
InitializeComponent();
}
private void btn_ImportCSV_ihoclaptrinh_Click(object sender, EventArgs e)
{
string csv_filePath = string.Empty;
OpenFileDialog f_diaglog = new OpenFileDialog();
f_diaglog.Title = "C# ihoclaptrinh.com Open File Dialog";
f_diaglog.InitialDirectory = @"c:\";
f_diaglog.Filter = "CSV|*.csv";
f_diaglog.FilterIndex = 2;
f_diaglog.RestoreDirectory = true;
if (f_diaglog.ShowDialog() != DialogResult.OK)
{
return;
}
try
{
csv_filePath = f_diaglog.FileName;
txt_FilePath.Text = Path.GetFullPath(csv_filePath);
DataTable dt = new DataTable();
dt = ReadCSV(csv_filePath); //Read CSV file and save to Datatable dt
if (dt.Rows.Count > 0)
{
//Connect to Database TestLuu
String Str_connect_DB = "data source=192.168.1.10;initial catalog=TestLuu; user id=sa; password=123456";
SqlConnection conn_DB = new SqlConnection(Str_connect_DB);
conn_DB.Open();
string SQL_Insert = "";
for (int i = 0; i <= dt.Rows.Count - 1; i++)
{
//Insert data to a table in Database
SQL_Insert = " INSERT INTO Product_t(ProductID, ProductName, ProductPrice, ProductColor) VALUES('" + dt.Rows[i]["ProductID"].ToString().Trim() + "',N'" + dt.Rows[i]["ProductName"].ToString().Trim() + "','" + Convert.ToDecimal(dt.Rows[i]["ProductPrice"].ToString().Trim()) + "', N'"+ dt.Rows[i]["ProductColor"].ToString().Trim() + "')";
SqlCommand cmd = new SqlCommand(SQL_Insert, conn_DB);
cmd.ExecuteNonQuery();
}
MessageBox.Show("Import CSV file successfully");
//Show data in DataGridView
String sql_ShowData = "Select * from Product_t ";
SqlDataAdapter da = new SqlDataAdapter(sql_ShowData, conn_DB);
DataTable dt1 = new DataTable();
da.Fill(dt1);
dt_List_Products.DataSource = dt1;
conn_DB.Close();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
public DataTable ReadCSV(string fileName)
{
DataTable dt = new DataTable();
FileStream fs = new FileStream(fileName, System.IO.FileMode.Open, System.IO.FileAccess.Read);
StreamReader sr = new StreamReader(fs, System.Text.Encoding.Default);
string strLine = "";
string[] aryLine;
int columnCount = 0;
bool IsFirst = true;
while ((strLine = sr.ReadLine()) != null)
{
aryLine = strLine.Split(',');
if (IsFirst == true)
{
IsFirst = false;
columnCount = aryLine.Length;
for (int i = 0; i < columnCount; i++)
{
DataColumn d_column = new DataColumn(aryLine[i]);
dt.Columns.Add(d_column);
}
}
else
{
DataRow d_row = dt.NewRow();
for (int j = 0; j < columnCount; j++)
{
d_row[j] = aryLine[j];
}
dt.Rows.Add(d_row);
}
}
sr.Close();
fs.Close();
return dt;
}
}
}
Chạy chương trình và chọn file csv để import vào cơ sở dữ liệu Database SQL.