Gặp vấn đề tương tự cách đây không lâu, tôi đã gặp câu hỏi của bạn nhiều lần khi đang tìm kiếm giải pháp, vì vậy tôi nghĩ rằng tôi nợ bạn — đây là những phát hiện của tôi cho đến nay:
Tóm lại, không có giải pháp sẵn sàng nào cho điều đó:nếu bạn mở Ant hoặc Maven nguồn, bạn sẽ thấy họ đang sử dụng bộ tách tập lệnh dựa trên regexp đơn giản, tốt cho các tập lệnh đơn giản, nhưng thường không thành công, ví dụ:các thủ tục được lưu trữ. Câu chuyện tương tự với iBATIS, di chuyển c5 db, v.v.
Vấn đề là, có nhiều hơn một ngôn ngữ liên quan:để chạy "SQL Scripts", người ta phải có khả năng xử lý (1) SQL, (2) PL / SQL và (3) lệnh sqlplus.
Đang chạy sqlplus
chính nó là cách thực sự, nhưng nó tạo ra sự lộn xộn về cấu hình, vì vậy chúng tôi đã cố gắng tránh tùy chọn này.
Có các trình phân tích cú pháp ANTLR cho PL / SQL, chẳng hạn như trình phân tích của Alexandre Porcelli —Những cái này rất gần, nhưng cho đến nay vẫn chưa có ai chuẩn bị một giải pháp thả vào hoàn chỉnh dựa trên những cái đó.
Chúng tôi đã viết xong một bộ chia đặc biệt khác
nhận biết một số lệnh sqlplus như /
và EXIT
- nó vẫn còn xấu, nhưng phù hợp với hầu hết các kịch bản của chúng tôi. (Lưu ý rằng một số tập lệnh, ví dụ:có --
ở cuối các nhận xét, sẽ không hoạt động — nó vẫn là một giải pháp, không phải là một giải pháp.)