Code C# Import CSV File To Database

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:

 

Các bước xây dựng chương trình C# import file CSV vào database như sau:

  1. Tạo file CSV:
  2. Tạo bảng table trong cơ sở dữ liệu MS SQL Server.
  3. Tạo project import file excel vào database trong windows form.

 

Bước 1: Tạo file CSV :

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:

 

Bước 2: Tạo bảng (table) trong cơ sở dữ liệu MSSQL Server.

Tạo bảng table : Product_t  trong Database TestLuu

Nội dung bảng Product_t như sau:

Bước 3: Tạo project import file CSV vào database trong windows form.

Các bước tạo project import file csv C# như sau:

-Mở phần mềm IDE Visual studio và tạo dự án C# project Window Form như sau:

-Thêm các Controls (Label, Textbox, Button, DataGridView và openFileDialog1) vào Form:

 

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.

 

- Viết Code C# import file csv:

+ 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.

 

Source code import file csv vào database trong C# như sau:

Ví dụ

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;
        }
    }
}

 

Bước 4: Chạy chương trình và import file csv để xem kết quả.

Chạy chương trình và chọn file csv để import vào cơ sở dữ liệu Database SQL.