Tôi có một bảng lưu trữ truy vấn T SQL được tạo động trong một cột của bảng. Yêu cầu của tôi là tôi cần thực hiện truy vấn được tạo (trong trường hợp của tôi, một số câu lệnh chèn) và tôi 'không muốn sử dụng vòng lặp while' để duyệt toàn bộ các hàng và sau đó thực hiện các câu lệnh từ một biến. Ngoài ra Tôi không muốn sử dụng con trỏ. Bảng này có khoảng 5 triệu câu lệnh chèn SQL được tạo động. Trước đó tôi đã thử điều này bằng cách sử dụng một vòng lặp while nhưng nó đã mất nhiều ngày để hoàn thành, và vì vậy tôi đã bỏ nó.Thực thi câu lệnh SQL động được lưu trữ trong một cột của một bảng
Trả lời
phải bất lực nhìn lên những gì `lakh' là :)
Như ý kiến khác đề cập đây không phải là phương pháp tối ưu nhất để DML, hãy xem xét việc sắp xếp. Vì bạn có thể kết hợp SQL động theo lô, ví dụ:
DECLARE @sSQL nvarchar(max)
SET @sSQL = 'BEGIN TRAN; '
SELECT @sSQL = @sSQL + COLUMN_WITH_INSERT_STATEMENT + '; '
FROM TABLE
WHERE [limit number of rows]
SET @sSQL = @sSQL + 'COMMIT TRAN '
EXEC(@sSQL)
Bằng cách này bạn có thể kết hợp số câu lệnh INSERT được kiểm soát thành một giao dịch. Bạn có thể kiểm soát số lần chèn bằng phương thức câu lệnh WHERE (ví dụ: WHERE ID BETWEEN 1 and 100
để thực thi 100 lần INSERT cùng một lúc) Bạn có thể lặp lại điều kiện này (có vòng lặp, nhưng nó sẽ không được lặp qua các hàng riêng lẻ, nhưng thông qua các điều kiện thay thế eg1 - 100, 101 - 200, 201 - 300 vv).
Cảm ơn bạn đã trả lời. Tôi đã thử phương pháp này. Vấn đề chính xảy ra với tôi là sự mâu thuẫn trong giới hạn của varchar (max) khi tôi đã thử nghiệm nó trên các máy khác nhau. Có lẽ, một cái gì đó để làm với mã hóa ký tự. – Dibin
Nvarchar (tối đa) giới hạn id 2Gb, về mặt kỹ thuật là đủ. Làm thế nào có thể báo cáo là bạn cố gắng để chạy cùng một lúc? –
Bạn có thể ghép nối trong exec của bạn để vượt quá tối đa. 'exec (@sSQL + @ sSQL1 + @ sSQL2)' – SQLMason
- 1. Bảng với các câu lệnh chọn, thực thi SQL động và giá trị trả về
- 2. Câu lệnh UPDATE sử dụng EXEC để thực thi một thủ tục đã lưu để SET một giá trị cột
- 3. Thực thi một Proc Oracle lưu trữ như Một tài
- 4. Thực hiện một câu lệnh sql động vào SYS_REFCURSOR
- 5. Thực thi tập lệnh SQL được lưu trữ dưới dạng tài nguyên
- 6. MyBatis thực thi nhiều câu lệnh sql trong một lần, có thể không?
- 7. Ngăn một thủ tục lưu trữ được thực thi hai lần cùng một lúc
- 8. SQL: Sử dụng bí danh của một cột trong một hàm trong câu lệnh select cùng
- 9. SQL: làm thế nào để thực thi rằng chỉ có một cột duy nhất được đặt trong một nhóm cột
- 10. Thực thi một hạn chế nước ngoài chìa khóa để cột của cùng một bảng
- 11. Tôi muốn ẩn tập lệnh của một thủ tục được lưu trữ trong SQL Server 2008
- 12. Thực thi tập lệnh SQL để tạo bảng và hàng
- 13. Thực thi mã được lưu trữ dưới dạng danh sách
- 14. Câu lệnh SQL để lấy tên bảng, khung nhìn và procs được lưu trữ, theo thứ tự
- 15. Làm cách nào để thực thi thủ tục được lưu trữ trong tác vụ SQL Agent?
- 16. Cột động trong postgres câu lệnh SELECT
- 17. Khi sử dụng nhiều câu lệnh WHEN MATCHED, tất cả các câu lệnh đó có thực thi hay chỉ một lệnh được thực thi?
- 18. Bí danh động trong câu lệnh SQL
- 19. Prefix tất cả các cột trong câu lệnh T-SQL
- 20. SQL cách cập nhật các hàng trong bảng bằng một câu lệnh SQL
- 21. Nhận câu lệnh T-SQL CREATE cho các thủ tục được lưu trữ SQLCLR
- 22. Câu lệnh sao lưu dòng lệnh SQL Server
- 23. Sql Server trả về giá trị của cột nhận dạng sau khi chèn câu lệnh
- 24. đo thời gian của một câu lệnh sql trong một thủ tục trong plsql
- 25. Thứ tự thực thi của các phần khác nhau của câu lệnh SQL chọn là gì?
- 26. Kết hợp nhiều truy vấn của cùng một bảng vào một câu lệnh SQL
- 27. mysql nhiều giới hạn trong một câu lệnh sql
- 28. Tại sao không thể sử dụng câu lệnh INSERT EXEC trong một thủ tục được lưu trữ được gọi bởi một thủ tục lưu sẵn khác?
- 29. Đổi tên các cột của một bảng SQL với các giá trị trường của một bảng
- 30. SQL cách tăng hoặc giảm một cột cho một cột int trong một lệnh
Việc thực hiện 5 triệu câu lệnh 'INSERT' sẽ mất một chút thời gian. Một phương pháp dựa trên tập hợp là không thể? –
Bạn có thiết kế mô hình dữ liệu khủng khiếp và giải pháp được thiết kế kỹ hơn cho một vấn đề. – SQLMason
Hiển thị cho chúng tôi một số ví dụ về dữ liệu này. Đây là một thiết kế rất tồi, và rất khó để giải quyết theo cách hoạt động tốt. Hy vọng tốt nhất của bạn là hầu hết các dữ liệu này có thể được giảm xuống một cái gì đó quan hệ hơn. – RBarryYoung