đưa dữ liệu từ excel vào sql

Xin kính chào chúng ta, bài viết lúc này bản thân đang khuyên bảo các bạn bí quyết import dữ liệu từ bỏ excel với số lượng record lớn (Big DATA) vào các đại lý tài liệu MSSquốc lộ hệ thống.quý khách sẽ xem: gửi tài liệu tự excel vào sql

Trong những bài trước, mình đã được bố trí theo hướng dẫn các bạn biện pháp import tài liệu từ bỏ excel vào database sqlserver.

You watching: đưa dữ liệu từ excel vào sql

Import tài liệu tự Excel với update lên SQL


*

Trong các bài xích trước mình đã được bố trí theo hướng dẫn import tài liệu trường đoản cú Excel với Database sqlVPS, tuy nhiên ví như file excel bao gồm số lượng record các vài trăm nđần độn cái hoặc thậm chí còn vài trăm triệu loại, thì chiến thuật để buổi tối ưu nó như thế nào, khiến cho ứng dụng của bản thân mình import dữ liệu vào một trong những cách nhanh lẹ.

Thông thường, ví như các bạn new học tập thiết kế Lúc chúng ta bắt đầu đọc tài liệu từ excel vào datatable xong.

Các chúng ta hay áp dụng vòng for bên trên từng DataRow, rồi insert tài liệu từng loại xuống, nếu chúng ta làm sao nhưng áp dụng giải pháp này thì khi chạy một vòng for, nó sẽ tạo nên ra một connection tới sqlserver nhằm import và nếu tài liệu gồm 100.000 record, phần mềm của bạn sẽ tạo thành 100.000 connection cho tới => Import rất lâu, không buổi tối ưu.

Nhưng trong nội dung bài viết này, bản thân vẫn gợi ý chúng ta phương pháp import dữ liệu chỉ cần tạo nên một connection đến sqlhệ thống để tiến hành công việc imoport này thôi.

See more: Biến Giọng Nói Thành Văn Bản Cực Nhanh Trên Android Và Iphone

Từ phiên bạn dạng Sqlhệ thống năm nhâm thìn trở đi, Microsoft tích hợp cho họ thao tác làm việc thân sqlserver và json vô cùng khỏe khoắn.

Nên vào bài bác này mình vẫn trình bày giải thuật import excel như sau:

Từ Datatable (hiểu từ tệp tin excel) => gửi thành tệp tin json (áp dụng thư viện newston json tự nuget) rồi chuyển đoạn json này xuống một Store Procedure để triển khai import tài liệu.

Bây giờ mình đã bước đầu thực hiện:

Tạo một database kiểm tra với tên BIGDATA (các chúng ta cũng có thể tải về database này ngơi nghỉ cuối bài xích viết)

Thứ nhất chúng ta tạo nên mình một bảng table tbl_danhbố nhỏng sau:


*

kế tiếp chúng ta tạo nên mình một store procedure để import dữ liệu:

table_danhba NVARCHAR(MAX))AS BEGIN INSERT INTO dbo.tbl_danhba(phone, name) SELECT phone, name FROM OPENJSON(table_danhba) WITH(phone VARCHAR(20), name NVARCHAR(200)) a WHERE NOT EXISTS (SELECT 0 FROM dbo.tbl_danhcha WHERE phone=a.phone);END;Tiếp theo, là source cho nút đọc dữ liệu từ bỏ tệp tin excel vào dataset.

private void btn_chonfile_Click(object sender, EventArgs e) using (OpenFileDialog ofd = new OpenFileDialog() *.xls;*.xlsx", ValidateNames = true ) if (ofd.ShowDialog() == DialogResult.OK) try txt_đầu vào.Text = ofd.FileName; using (var stream = File.Open(ofd.FileName, FileMode.mở cửa, FileAccess.Read, FileShare.ReadWrite)) IExcelDataReader reader; if (ofd.FilterIndex == 2) reader = ExcelReaderFactory.CreateBinaryReader(stream); else reader = ExcelReaderFactory.CreateOpenXmlReader(stream); ds = reader.AsDataSet(new ExcelDataSetConfiguration() ConfigureDataTable = (_) => new ExcelDataTableConfiguration() UseHeaderRow = true ); reader.Close(); catch (Exception) MessageBox.Show("Vui lòng tắt tệp tin excel đang msống nhằm imports.", "Thông Báo", MessageBoxButtons.OK, MessageBoxInhỏ.Warning); Và liên tiếp là button insert dữ liệu tự datatable xuống sqlVPS.

See more: Sinh Con Năm 2016 Sinh Con Tháng Nào Tốt ? Mẹ Hãy Cập Nhật Ngay!

private void btn_import_Click(object sender, EventArgs e) string ip = "NGUYENTHAONGUYENTHAO"; string db_name = "BIGDATA"; string db_user = "sa"; string db_pass = "minh123"; try string jData = JsonConvert.SerializeObject(ds.Tables); string connectionSTR = $"Server=ip;Database=db_name;User Id=db_user; Password =db_pass; Connection Timeout=3"; var conn = new SqlConnection(connectionSTR); SqlCommvà sqlcom = new SqlCommand("usp_Insert_danhba", conn); sqlcom.CommandType = CommandType.StoredProcedure; sqlcom.Parameters.AddWithValue("table_danhba", jData); conn.Open(); sqlcom.ExecuteNonQuery(); conn.Close(); LoadData(); MessageBox.Show("Import dữ liệu thành công!.", "Thông Báo", MessageBoxButtons.OK, MessageBoxInhỏ.Information); catch (Exception ex) MessageBox.Show($"ex.Message ", "Thông Báo", MessageBoxButtons.OK, MessageBoxInhỏ.Information); Kết quả sau khoản thời gian import dữ liệu:


*

Trong source code dưới bản thân đang cung ứng cho các bạn: source code C#, sqlVPS, và 1 tệp tin excel nhằm các bạn thực hành thực tế.