Code C# Insert Big Data to SQL Database

Code C# Insert Big Data to SQL Database có nghĩa là sử dụng ngôn ngữ lập trình C# để insert dữ liệu lớn (Big Data) vào cơ sở dữ liệu SQL (SQL Database).

Hiện nay vấn đề xử lý dữ liệu lớn (Big Data) được ứng dụng rất nhiều và phổ biến trong lập trình các ứng dụng phần mềm và đặc biệt trong lĩnh vực AI.

Làm thế nào để insert dữ liệu lớn (Big Data) vào cơ sở dữ liệu SQL (SQL Database) trong C# ?

Trong C# có nhiều cách insert dữ liệu vào cơ sở dữ liệu SQL.Tuy nhiên để insert một dữ liệu lớn và tốc độ insert nhanh thì có 2 cách sau:

+ Code C# Insert dữ liệu lớn (Big Data) vào cơ sở dữ liệu SQL Database sử dụng cách Insert một Table to Database. 

+ Code C# Insert dữ liệu lớn (Big Data) vào cơ sở dữ liệu sử dụng Insert BulkCopy trong C#.

Sử dụng Insert a Table to Databse và Insert BulkCopy để insert dữ liệu lớn Big Data là bởi vì tốc độ insert vào cơ sở dữ liệu Database là nhanh hơn rất nhiều so với sử dụng vòng lặp for thông thường.

Ví dụ thời gian import 1 triệu bản ghi (insert 1 million records), tương ứng với 1000000 rows vào cơ sở dữ liệu SQL Database nó chỉ mất là 5-10 giây.

Trong bài này chúng tôi sẽ hướng dẫn bạn cách Insert dữ liệu lớn (Big Data) bằng cách insert một bảng Table vào cơ sở dữ liệu SQL Database trong C#.

 

Các bước tạo project insert Big Data trong C# như sau:

1.Tạo bảng Table trong cơ sở dữ liệu SQL Database.

2.Tạo thủ tục Procedure để insert dữ liệu.

3.Tạo Form insert dữ liệu trong Windows Form.

4.Tạo dữ liệu lớn Big Data.

5.Viết Code C# insert dữ liệu lớn (Big Data) vào cơ sở dữ liệu SQL Database

6.Chạy chương trình và kiểm tra kết quả

 

1.Tạo bảng Table trong cơ sở dữ liệu SQL Database.

- Tạo bảng Products_t (Table) để lưu trữ dữ liệu lớn trong cơ sở dữ liệu ihoclaptrinh (Database ihoclaptrinh)

Ví dụ

CREATE TABLE [dbo].[Products_t](
    [ProductID] [nvarchar](150) NULL,
    [ProductName] [nvarchar](150) NULL
)

- Tạo bảng tb_Products (Table) 

Ví dụ

CREATE TYPE [dbo].[tb_Products] AS TABLE( 

    [ProductID] [nvarchar](150) NULL, 

    [ProductName] [nvarchar](150) NULL

)

2.Tạo Procedure để Insert dữ liệu.

- Tạo thủ tục procedure p_Insert_BigData_To_Database_ihoclaptrinh để thực hiện quá trình insert dữ liệu từ bảng @tb_Products vào bảng Products_t như sau:

Ví dụ

CREATE PROCEDURE [dbo].[p_Insert_BigData_To_Database_ihoclaptrinh] 

       @tb_Products  dbo.tb_Products READONLY 

AS 

BEGIN 

       SET NOCOUNT ON 

       INSERT INTO Products_t(ProductID,ProductName)  SELECT ProductID,ProductName FROM  @tb_Products 

END 

 

3.Tạo Form insert dữ liệu trong Windows Form.

- Tạo Form Frm_InsertBigData 

- Thêm các controls vào Form như hình dưới đây

 

4.Tạo dữ liệu lớn Big Data.     

- Tạo bảng Datatable dt_BigData và add dữ liệu.

Ví dụ

            //Create table dt_BigData and add data to dt_BigData.
            DataTable dt_BigData = new DataTable();
            DataColumn column1 = null;
            column1 = new DataColumn("ProductID");
            dt_BigData.Columns.Add(column1);

            DataColumn column2 = null;
            column2 = new DataColumn("ProductName");
            dt_BigData.Columns.Add(column2);

            //Create Big Data 1 million products (1.000.000 records of products) and add to Datatable
            for (int i = 1; i <= 1000000; i++)
            {
                DataRow d_row = dt_BigData.NewRow();
                d_row["ProductID"] = "ProductID_" + i.ToString();
                d_row["ProductName"] = "ProductName_" + i.ToString();
                dt_BigData.Rows.Add(d_row);
            }

 

5.Viết Code C# insert dữ liệu lớn (Big Data) vào cơ sở dữ liệu SQL Database

Sau đây là toàn bộ source code C# insert dữ liệu lớn vào cơ sở dữ liệu SQL:

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.Data.SqlClient;
using System.Configuration;

namespace Insert_BigData
{
    public partial class Frm_InsertBigData : Form
    {
        public Frm_InsertBigData()
        {
            InitializeComponent();
        }
        private void btn_InsertBigData_Click(object sender, EventArgs e)
        {
            //Create table dt_BigData and add data to dt_BigData.
            DataTable dt_BigData = new DataTable();
            DataColumn column1 = null;
            column1 = new DataColumn("ProductID");
            dt_BigData.Columns.Add(column1);

            DataColumn column2 = null;
            column2 = new DataColumn("ProductName");
            dt_BigData.Columns.Add(column2);

            //Create Big Data 1 million products (1.000.000 records of products) and add to Datatable
            for (int i = 1; i <= 1000000; i++)
            {
                DataRow d_row = dt_BigData.NewRow();
                d_row["ProductID"] = "ProductID_" + i.ToString();
                d_row["ProductName"] = "ProductName_" + i.ToString();
                dt_BigData.Rows.Add(d_row);
            }
            
            //Show Start time - Thời gian bắt đầu insert dữ liệu
            lbl_StartTime.Text = Convert.ToString(DateTime.Now.ToString());

            // Insert Datatable dt_BigData to parameter and Insert to Database.
            SqlParameter param = new SqlParameter();
            param.ParameterName = "tb_products";
            param.SqlDbType = SqlDbType.Structured;
            param.Value = dt_BigData;
            param.Direction = ParameterDirection.Input;

            String Str_connect_DB = "data source=192.168.1.10; initial catalog=ihoclaptrinh; user id=sa; password=123456";
            SqlConnection conn = null;
            using (conn = new SqlConnection(Str_connect_DB))
            {
                SqlCommand sqlCmd = new SqlCommand("p_Insert_BigData_To_Database_ihoclaptrinh");
                conn.Open();
                sqlCmd.Connection = conn;
                sqlCmd.CommandType = CommandType.StoredProcedure;
                sqlCmd.Parameters.Add(param);
                sqlCmd.ExecuteNonQuery();

                //Show End time - Thời gian kết thúc insert dữ liệu
                lbl_EndTime.Text = Convert.ToString(DateTime.Now.ToString());

                //Show Data - Hiển thị dữ liệu đã insert lên DataGridView
                string sql_Select = "Select * From Products_t";
                SqlDataAdapter da = new SqlDataAdapter(sql_Select, conn);
                DataTable dt1 = new DataTable();
                da.Fill(dt1);
                dtg_ListData_Database.DataSource = dt1;
                conn.Close();
                lbl_TotalRecordsDataInserted.Text = Convert.ToString(dt1.Rows.Count);
                MessageBox.Show("Insert Successfully !");
            }  
        }    

    }
}

 

6.Chạy chương trình và kiểm tra kết quả.

Chạy chương trình và nhấn nút Insert Big Data To Database SQL để thực hiện việc tạo và insert dữ liệu.


Kết quả: Thời gian insert 1000000 bản ghi sản phẩm (insert 1 million records of products) là 6 giây.Như các bạn có thể thấy tốc độ insert là nhất nhanh.Nhanh hơn rất nhiều lần so với việc insert sử dụng vòng lặp for thông thường.