Tôi đang xây dựng hệ thống để cập nhật lượng lớn dữ liệu thông qua các nguồn cấp dữ liệu CSV khác nhau. Thông thường tôi sẽ chỉ lặp lại mặc dù mỗi hàng trong nguồn cấp dữ liệu, thực hiện một truy vấn chọn để kiểm tra xem mục đã tồn tại chưa và chèn/cập nhật một mục tùy thuộc vào nó có tồn tại hay không.Các phương pháp hay nhất để chèn/cập nhật lượng lớn dữ liệu trong SQL Server 2008
Tôi cảm thấy phương pháp này không phải là rất khả năng mở rộng và có thể búa máy chủ trên nguồn cấp dữ liệu lớn hơn. Giải pháp của tôi là lặp qua các mục như bình thường nhưng lưu trữ chúng trong bộ nhớ. Sau đó, đối với mỗi 100 mục hay hơn, hãy chọn trên 100 mục đó và nhận danh sách các mục hiện có trong cơ sở dữ liệu phù hợp. Sau đó nối các câu lệnh chèn/cập nhật lại với nhau và chạy chúng vào cơ sở dữ liệu. Điều này về cơ bản sẽ cắt giảm các chuyến đi đến cơ sở dữ liệu.
Đây có phải là giải pháp đủ khả năng mở rộng và có bất kỳ hướng dẫn ví dụ nào về cách nhập nguồn cấp dữ liệu lớn vào môi trường sản xuất không?
Cảm ơn
+1 để sử dụng BULK INSERT & MERGE –
Cảm ơn đề xuất của bạn. Lý do tôi lặp qua từng mục là vì tôi cần thực hiện một số xác nhận hợp lệ và định dạng logic trước khi thêm nó vào cơ sở dữ liệu. Điều này sau đó chuyển tiếp lại cho người dùng nếu có bất kỳ vấn đề nào với chính nguồn cấp dữ liệu đó. Tôi thích ý tưởng sáp nhập dữ liệu mặc dù, tôi sẽ xem xét điều đó. – markvpc
Bạn cũng có thể dễ dàng xác thực và định dạng theo kiểu thiết lập. Looping thông qua các hồ sơ cá nhân là hầu như luôn luôn là một sự lựa chọn nghèo và bạn không nên xem xét làm điều đó cho đến khi tất cả các tùy chọn khác đã được loại bỏ. – HLGEM