Import Dữ Liệu Lớn Từ Excel Vào Sql Server Nhanh Nhất.
Có thể bạn quan tâm
- Trang chủ Có gì mới Hoạt động gần nhất Tác giả
- Diễn đàn Tìm bài viết mới Tìm theo chuyên mục
- Video Video về Excel Video về tin học khác Tin tức về tin học chung
- Thông tin mới Tìm bài mới Tài Nguyên Mới Hoạt động gần nhất
- Tài nguyên Đánh giá mới nhất Tìm tài nguyên
- Đóng góp
Tìm kiếm
Mọi nơi Đề tài Diễn đàn này Đề tài này Chỉ tìm trong tiêu đề Tìm kiếm Tìm nâng cao…- Tìm bài viết mới
- Tìm theo chuyên mục
Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
- Khách ơi! GPE thông tin đến bạn ấn phẩm "lập trình VBA trong Excel": - Phần cơ bản - Phần Nâng Cao - VBA trong Excel - Cải thiện và tăng tốc
- Trang chủ
- Diễn đàn
- Lập Trình với Excel
- Lập Trình với Excel
- Thread starter quang0308
- Ngày gửi 26/4/22
quang0308
Thành viên mới
Tham gia 21/7/21 Bài viết 11 Được thích 0 Nhờ các anh, chị chỉ giúp có cách nào đưa dữ liệu từ excel vào sql server bằng VBA nhanh nhất đối với nguồn dữ liệu trên 10k dòng mà không bị treo file excel không ah, Em áp dụng câu lệnh insert into nó chậm và treo máy khi dữ liệu lớn.- 1
- 2
Go to page
Tiếp tục Tiếp Last Sắp xếp theo thời gian sắp xếp theo bầu chọnNgày mai trời lại sáng
Thành viên thường trực
Tham gia 4/7/21 Bài viết 339 Được thích 139quang0308 đã viết: Nhờ các anh, chị chỉ giúp có cách nào đưa dữ liệu từ excel vào sql server bằng VBA nhanh nhất đối với nguồn dữ liệu trên 10k dòng nhanh nhất mà không bị treo file excel không ah, Em áp dụng câu lệnh insert into nó chậm và treo máy khi dữ liệu lớn. Nhấp chuột vào đây để mở rộng...Vậy bạn thử for.. next dữ liệu rồi đưa hết vào câu lệnh insert into cuối cùng là ghi vào xem vấn đề gì không (nghĩa là ghi 1 lần) thay vì mỗi vòng lặp là 1 lần ghi vào. Upvote 0 Q
quang0308
Thành viên mới
Tham gia 21/7/21 Bài viết 11 Được thích 0Ngày mai trời lại sáng đã viết: Vậy bạn thử for.. next dữ liệu rồi đưa hết vào câu lệnh insert into cuối cùng là ghi vào xem vấn đề gì không (nghĩa là ghi 1 lần) thay vì mỗi vòng lặp là 1 lần ghi vào. Nhấp chuột vào đây để mở rộng...Mình đã thử rất nhiều cách,trong đó có cách của bạn nhưng cũng không nhanh hơn dc vì nó phải chạy lệnh insert thì sẽ không nhanh được. Upvote 0
Ngày mai trời lại sáng
Thành viên thường trực
Tham gia 4/7/21 Bài viết 339 Được thích 139quang0308 đã viết: Mình đã thử rất nhiều cách,trong đó có cách của bạn nhưng cũng không nhanh hơn dc vì nó phải chạy lệnh insert thì sẽ không nhanh được. Nhấp chuột vào đây để mở rộng...Cách nào chẳng phải for next bạn, cách của mình là câu lệnh insert sẽ nằm ngoài vòng lặp sau khi kết thúc mà bạn.. cách bạn có giống không? Upvote 0 Q
quang0308
Thành viên mới
Tham gia 21/7/21 Bài viết 11 Được thích 0Ngày mai trời lại sáng đã viết: Cách nào chẳng phải for next bạn, cách của mình là câu lệnh insert sẽ nằm ngoài vòng lặp sau khi kết thúc mà bạn.. cách bạn có giống không? Nhấp chuột vào đây để mở rộng...Rồi insert vào kiểu gì bạn thử demo cho mình dc không? Upvote 0
Ngày mai trời lại sáng
Thành viên thường trực
Tham gia 4/7/21 Bài viết 339 Được thích 139quang0308 đã viết: Rồi insert vào kiểu gì bạn thử demo cho mình dc không? Nhấp chuột vào đây để mở rộng...Vậy code của bạn đâu? Upvote 0 V
VetMini
Ăn cùng góc phố
Tham gia 21/12/12 Bài viết 17,663 Được thích 24,477 Bên SQL Server, lập cái SP nó import từ Excel. Chứ ai lại đi ngược vậy. SQL Server, dùng SP thì khá an toàn. Đi từ VBA qua thì câu kết nối phải cởi cái lớp an toàn của SQL Server. Đang không tự giao chìa khoá nhà cho người ngoài. Từ Excel vào nơi khác thì gọi là Export chứ đâu phải Import. Upvote 0 Qquang0308
Thành viên mới
Tham gia 21/7/21 Bài viết 11 Được thích 0quang0308 đã viết: Rồi insert vào kiểu gì bạn thử demo cho mình dc không? Nhấp chuột vào đây để mở rộng...Cách của ban có lẽ là tạo 1 chuỗi dữ liệu theo cấu trúc bảng rồi thực thi câu lệnh insert,cách này mình đã làm dữ liệu lớn nó chạy miệt mài bạn oi. Bài đã được tự động gộp: 26/4/22
VetMini đã viết: Bên SQL Server, lập cái SP nó import từ Excel. Chứ ai lại đi ngược vậy. SQL Server, dùng SP thì khá an toàn. Đi từ VBA qua thì câu kết nối phải cởi cái lớp an toàn của SQL Server. Đang không tự giao chìa khoá nhà cho người ngoài. Từ Excel vào nơi khác thì gọi là Export chứ đâu phải Import. Nhấp chuột vào đây để mở rộng...Mình tạo sẵn bảng trên sql và nguoi dùng họ nhấn nút để đẩy dữ liệu lên đó thì có gì sai bạn. Upvote 0
ongke0711
Thành viên gắn bó
Tham gia 7/9/06 Bài viết 2,241 Được thích 2,971 Giới tính Namquang0308 đã viết: Nhờ các anh, chị chỉ giúp có cách nào đưa dữ liệu từ excel vào sql server bằng VBA nhanh nhất đối với nguồn dữ liệu trên 10k dòng mà không bị treo file excel không ah, Em áp dụng câu lệnh insert into nó chậm và treo máy khi dữ liệu lớn. Nhấp chuột vào đây để mở rộng...C1: Bạn đã thử dùng ADODB Recordset chưa? - Kết nối SQL Server, mở ADO Recordset từ Table đích. - Đưa dữ liệu Excel vào Array rồi AddNew vào ADO Recordset -> UpdateBatch. Cách này chắc chắn nhanh hơn Insert into. C2: Chuyển dữ liệu Excel thành CSV rồi Bulk Insert vào SQL SV. Cái này viết SP. Lần chỉnh sửa cuối: 26/4/22 Upvote 0
Ngày mai trời lại sáng
Thành viên thường trực
Tham gia 4/7/21 Bài viết 339 Được thích 139quang0308 đã viết: Cách của ban có lẽ là tạo 1 chuỗi dữ liệu theo cấu trúc bảng rồi thực thi câu lệnh insert,cách này mình đã làm dữ liệu lớn nó chạy miệt mài bạn oi. Bài đã được tự động gộp: 26/4/22 Mình tạo sẵn bảng trên sql và nguoi dùng họ nhấn nút để đẩy dữ liệu lên đó thì có gì sai bạn. Nhấp chuột vào đây để mở rộng...
quang0308 đã viết: Rồi insert vào kiểu gì bạn thử demo cho mình dc không? Nhấp chuột vào đây để mở rộng...Kiểu này nè bạn: Mã:Sao chép. data = rng.Resize(lastRow, lastCol).Value For j = 1 To lastCol If j = 1 Then sColName = data(1, j) Else sColName = sColName & "," & data(1, j) End If Next j For i = 2 To lastRow For j = 1 To lastCol If i = 2 Then str = data(i, j) Else str = "'" & data(i, j) & "'" End If If j = 1 And i = 2 Then aInsert = "(" & str ElseIf j = 1 Then aInsert = aInsert & ",(" & str Else aInsert = aInsert & "," & str End If Next j aInsert = aInsert & ")" Next i strSQL = "INSERT INTO " & "[" & sDBName & "].[dbo].[" & sTbName & "] (" & sColName & ") VALUES " & aInsert cnn.Execute (strSQL) Upvote 0 V
VetMini
Ăn cùng góc phố
Tham gia 21/12/12 Bài viết 17,663 Được thích 24,477quang0308 đã viết: ... Mình tạo sẵn bảng trên sql và nguoi dùng họ nhấn nút để đẩy dữ liệu lên đó thì có gì sai bạn. Nhấp chuột vào đây để mở rộng...SQL Server phải cho phép VBA kết nối. Chính cái kết nối ấy mở đường cho acttack. Kiến thức về an toàn CSDL của người viết VBA là con số không tổ bố. Hầu hết các chuỗi kết nối chứa tên user và password. Khi làm việc trên SQL Server Management Studio (SSMS) thì chủ server cho phép máy con được kết nối với một số diều kiện. Người chạy SSMS phải có một số kiến thức về an toàn. Admin của Server có thể giới hạn rằng người dùng chỉ có quyền đọc, ghi thì phải dùng SP (stored procedure) Cách an toàn duy nhất cho VBA là đặt Schedule Task, đưa tham số tên file, tên bảng vào SP. Scheduled Task sẽ tự chạy SP. Vì SP chịu kiểm soát của Server cho nên khá an toàn. Upvote 0 Q
quang0308
Thành viên mới
Tham gia 21/7/21 Bài viết 11 Được thích 0Ngày mai trời lại sáng đã viết: Kiểu này nè bạn: Mã:Sao chép. data = rng.Resize(lastRow, lastCol).Value For j = 1 To lastCol If j = 1 Then sColName = data(1, j) Else sColName = sColName & "," & data(1, j) End If Next j For i = 2 To lastRow For j = 1 To lastCol If i = 2 Then str = data(i, j) Else str = "'" & data(i, j) & "'" End If If j = 1 And i = 2 Then aInsert = "(" & str ElseIf j = 1 Then aInsert = aInsert & ",(" & str Else aInsert = aInsert & "," & str End If Next j aInsert = aInsert & ")" Next i strSQL = "INSERT INTO " & "[" & sDBName & "].[dbo].[" & sTbName & "] (" & sColName & ") VALUES " & aInsert cnn.Execute (strSQL) Nhấp chuột vào đây để mở rộng...Ok nhưng dữ liệu lớn chạy chậm lắm bạn. Ban có cách nào nhanh hơn chỉ mình với. Upvote 0
Ngày mai trời lại sáng
Thành viên thường trực
Tham gia 4/7/21 Bài viết 339 Được thích 139quang0308 đã viết: Ok nhưng dữ liệu lớn chạy chậm lắm bạn. Ban có cách nào nhanh hơn chỉ mình với. Nhấp chuột vào đây để mở rộng...Mình thấy bài 9 của anh @ongke0711 có gợi ý 2 cách đó mà chưa thấy bạn phản hồi. Rồi các nguy cơ liên quan đến máy chủ mà chú @VetMini nói tớ nữa đó bạn. Mình không có phòng thí nghiệm để thử nên chỉ có cách củ chuối đó thôi bạn. Upvote 0
ongke0711
Thành viên gắn bó
Tham gia 7/9/06 Bài viết 2,241 Được thích 2,971 Giới tính Nam Đang rảnh làm cái test transfer data các kiểu xem như thế nào nhé. - Dữ liệu: 30k dòng x 15 cột - Mới test 2 cách đã đề cập: dùng SP để bulk insert cực kỳ nhanh nhưng đổi lại là user phải có quyền Admin mới xài được lệnh này. - Dùng Bulk insert thì sẽ có những đánh đổi để được tốc độ như nó không kiểm tra các khóa, các ràng buộc dữ liệu (constraint) mà chỉ nạp một đống dữ liệu vào. Nếu ngoài việc chuyển dữ liệu lớn vào SQL SV thì không nên dùng cách này. (Lưu ý: là chỉ đang test trên cùng 1 máy cài SQL SV, không tính tới yếu tố băng thông khi đưa lên máy chủ, qua mạng LAN, WAN) Lần chỉnh sửa cuối: 27/4/22 Upvote 0Ngày mai trời lại sáng
Thành viên thường trực
Tham gia 4/7/21 Bài viết 339 Được thích 139ongke0711 đã viết: Đang rảnh làm cái test transfer data các kiểu xem như thế nào nhé. - Dữ liệu: 30k dòng x 15 cột - Mới test 2 cách đã đề cập: dùng SP để bulk insert cực kỳ nhanh nhưng đổi lại là user phải có quyền Admin mới xài được lệnh này. View attachment 275069 Nhấp chuột vào đây để mở rộng...Nhìn hấp dẫn quá,chia sẻ cho em học để áp dụng với anh Upvote 0 Q
quang0308
Thành viên mới
Tham gia 21/7/21 Bài viết 11 Được thích 0ongke0711 đã viết: C1: Bạn đã thử dùng ADODB Recordset chưa? - Kết nối SQL Server, mở ADO Recordset từ Table đích. - Đưa dữ liệu Excel vào Array rồi AddNew vào ADO Recordset -> UpdateBatch. Cách này chắc chắn nhanh hơn Insert into. C2: Chuyển dữ liệu Excel thành CSV rồi Bulk Insert vào SQL SV. Cái này viết SP. Nhấp chuột vào đây để mở rộng...C1 mình đã làm nhưng vần không nhanh hơn được. C2 thì mình không biết, bạn có thể hướng dẫn mình được không ? Upvote 0
ongke0711
Thành viên gắn bó
Tham gia 7/9/06 Bài viết 2,241 Được thích 2,971 Giới tính Namquang0308 đã viết: C1 mình đã làm nhưng vần không nhanh hơn được. C2 thì mình không biết, bạn có thể hướng dẫn mình được không ? Nhấp chuột vào đây để mở rộng...Code bạn làm như thế nào? Xem thử nguyên nhân nó ra sao. Upvote 0 Q
quang0308
Thành viên mới
Tham gia 21/7/21 Bài viết 11 Được thích 0ongke0711 đã viết: Code bạn làm như thế nào? Xem thử nguyên nhân nó ra sao. Nhấp chuột vào đây để mở rộng...'Sub NL_TH_KHTT() ' 'FORM_LOG.Show ' Call connect_data.connect_sql ' Dim rs, rs1 As Object ' Dim delete_query, select_query As String ' delete_query = "truncate table [CSDL_LDA].[KHOAN_PHONG].[NL_TH_KHTT]" ' Set rs = cn.Execute(delete_query) ' select_query = "Select * from [CSDL_LDA].[KHOAN_PHONG].[NL_TH_KHTT] " ' Set rs1 = CreateObject("adodb.RecordSet") ' rs1.Open select_query, cn, 1, 3 ' Dim xlRow, last_row As Long ' Dim xlCol As Integer ' last_row = ThisWorkbook.Worksheets("NL_TH_KHTT").Cells(Rows.Count, 1).End(xlUp).Row ' For xlRow = 2 To last_row ' rs1.AddNew ' For xlCol = 1 To 20 ' rs1.Fields(Cells(1, xlCol).Value) = Cells(xlRow, xlCol).Value ' Next xlCol 'Next xlRow 'rs1.updateBatch ' cn.Close ' Set cn = Nothing ' Set rs1 = Nothing ' Set rs = Nothing ' End Sub Bạn xem thử vì sao nó chậm lắm luôn á, còn chậm hơn cả cách insert into ngoài vòng for .. next Upvote 0
thuyyeu99
Trùm Nhiều Chuyện
Tham gia 6/6/08 Bài viết 1,729 Được thích 875quang0308 đã viết: 'Sub NL_TH_KHTT() ' 'FORM_LOG.Show ' Call connect_data.connect_sql ' Dim rs, rs1 As Object ' Dim delete_query, select_query As String ' delete_query = "truncate table [CSDL_LDA].[KHOAN_PHONG].[NL_TH_KHTT]" ' Set rs = cn.Execute(delete_query) ' select_query = "Select * from [CSDL_LDA].[KHOAN_PHONG].[NL_TH_KHTT] " ' Set rs1 = CreateObject("adodb.RecordSet") ' rs1.Open select_query, cn, 1, 3 ' Dim xlRow, last_row As Long ' Dim xlCol As Integer ' last_row = ThisWorkbook.Worksheets("NL_TH_KHTT").Cells(Rows.Count, 1).End(xlUp).Row ' For xlRow = 2 To last_row ' rs1.AddNew ' For xlCol = 1 To 20 ' rs1.Fields(Cells(1, xlCol).Value) = Cells(xlRow, xlCol).Value ' Next xlCol 'Next xlRow 'rs1.updateBatch ' cn.Close ' Set cn = Nothing ' Set rs1 = Nothing ' Set rs = Nothing ' End Sub Bạn xem thử vì sao nó chậm lắm luôn á, còn chậm hơn cả cách insert into ngoài vòng for .. next Nhấp chuột vào đây để mở rộng...Theo tôi thấy code bạn làm sai ý rồi, cố gắng mò đi cho nhớ Upvote 0
ongke0711
Thành viên gắn bó
Tham gia 7/9/06 Bài viết 2,241 Được thích 2,971 Giới tính Namquang0308 đã viết: ' Dim rs, rs1 As Object ' For xlCol = 1 To 20 ' rs1.Fields(Cells(1, xlCol).Value) = Cells(xlRow, xlCol).Value ' Next xlCol 'Next xlRow Bạn xem thử vì sao nó chậm lắm luôn á, còn chậm hơn cả cách insert into ngoài vòng for .. next Nhấp chuột vào đây để mở rộng...- Dính lỗi khai báo biến gộp. Có bài nói rồi. - Mỗi lần lấy dữ liệu là mỗi lần tương tác với Sheet. - Các Action query (Delete, Insert, update) thì chỉ cần thực thi, không cần phải qua đối tượng Recordset. Dùng thẳng đối tượng ADO Connection hoặc ADO Command. - Code VBA còn lủng củng thì sẽ khó hơn khi tương tác với stored procedure của SQL Server. Thông thường khi nhập liệu lên table của SQL Server người ta thường truyền tham số cho stored procedure của SQL Sv để chạy trên máy chủ chứ không chạy bằng câu lệnh SQL ở phía khách như anh Vetmini đã đề cập ở trên. (Tránh bị SQL injection). Lần chỉnh sửa cuối: 27/4/22 Upvote 0
- 1
- 2
Go to page
Tiếp tục Tiếp Last Bạn phải đăng nhập hoặc đăng ký để trả lời bài viết tại đây.Bài viết mới nhất
Mình cần trợ giúp về hàm Vlookup- khoaibongvn
- 59 phút trước
- Giải thích, gỡ rối, xử lý lỗi công thức
- Question
- van khang 96
- 31 phút trước
- Lập Trình với Excel
- duymax1234567
- 49 phút trước
- Office 365
- nghiemcongdien
- 9/11/24
- Google Spreadsheets
- jusend
- Thứ tư lúc 16:43
- Giải thích, gỡ rối, xử lý lỗi công thức
- LINHCM
- Hôm qua, lúc 20:21
- Xử lý chuỗi ký tự
- thuong-minh
- Thứ bảy lúc 11:10
- Hàm và công thức Excel
- Question
- DMQ
- Thứ tư lúc 21:16
- Lập Trình với Excel
- binhminhcaonguyen2
- 9/10/12
- Chia sẻ
- tungns1210
- 21/9/20
- Pivot table
- WINDOWS02
- Thứ bảy lúc 14:05
- Ứng dụng Báo cáo và Thuyết trình
- huuthang_bd
- 2/6/22
- Các Add-ins cho excel
- WINDOWS02
- Thứ bảy lúc 20:17
- Ứng dụng Báo cáo và Thuyết trình
- Question
- test1986
- Thứ sáu lúc 11:09
- Lập Trình với Excel
- Dauthivan
- 13/12/11
- Ứng dụng Báo cáo và Thuyết trình
- Hoale85
- Thứ năm lúc 11:16
- Những vấn đề chung
- Huy Đặng
- Thứ sáu lúc 15:20
- Hỏi đáp những vấn đề khác
- yeunghelayeutien
- Thứ sáu lúc 15:50
- Hàm và công thức Excel
- tusedo
- Thứ sáu lúc 15:26
- Hàm và công thức Excel
- Question
- ongke0711
- 6/10/24
- Lập Trình với Excel
Thành viên có số lượng bài viết cao nhất tháng
- Hoàng Tuấn 868 3
- DMQ 3
- HUONGHCKT 2
- LINHCM 2
- ptm0412 2
- van khang 96 2
- khoaibongvn 2
- huyxds 1
- Trần Văn Bình 1
- SA_DQ 1
- thuong-minh 1
- HieuCD 1
- DeTong 1
- trannamhai051284 1
- duymax1234567 1
Thành viên có điểm tương tác cao nhất tháng
- Hoàng Tuấn 868 6
- SA_DQ 6
- DMQ 2
- HieuCD 2
- ptm0412 2
- HUONGHCKT 1
- Trang chủ
- Diễn đàn
- Lập Trình với Excel
- Lập Trình với Excel
- Website này sử dụng cookies. Tiếp tục sử dụng trang này, đồng nghĩa với việc bạn chấp nhận website sử dụng cookies. Chấp nhận Tìm hiểu thêm.…
Từ khóa » Chuyển Dữ Liệu Từ Excel Sang Sql Server
-
Hướng Dẫn Import File Excel Vào SQL Server – Trường Hợp Máy Cài ...
-
Cách Import Dữ Liệu Từ Excel Vào SQL Server Hiệu Quả 100%
-
Import Dữ Liệu Từ Excel Vào SQL Server - Học Viện GNV1
-
Import File Excel Vào Sql - Campus Study Lab
-
Import Dữ Liệu Từ Excel Vào SQL Server - YouTube
-
Hướng Dẫn Import File Excel Vào SQL Server - YouTube
-
Đưa Dữ Liệu Từ Excel Vào Sql
-
Import Dữ Liệu Từ Excel Vào SQL Server - Công Nghệ Online
-
Kết Nối đến SQL Server để Lấy Dữ Liệu Vào Excel - Thế Giới Thủ Thuật
-
Import Data From Excel To SQL - SQL Server - Microsoft Docs
-
Import Dữ Liệu Từ Excel Vào Sql - Thosanhuyenthoai
-
Import File Excel Vào Sql Server
-
Import Dữ Liệu Từ Excel Vào Sql - Disqus
-
Cập Nhật Cách Nhập Dữ Liệu Từ Excel Vào SQL Server Hiệu Quả 100%