2011-08-03 63 views
5

Tôi đã có tệp sql có chứa tập lệnh cụ thể sqlplus: nó bao gồm/hoặc; như các terminators câu lệnh, EXEC để thực hiện các thủ tục đã lưu trữ, v.v.Cách đơn giản để chạy tập lệnh sqlplus từ java

Tôi cần thực thi tập lệnh này từ java (jdbc) mà không cần sqlplus.

tác vụ kiến ​​sql/maven sql plugin không thể xử lý các thuật ngữ hoặc lệnh EXEC khác nhau.

Bạn có biết cách nào tốt để làm điều đó mà không cần chạy sqlplus không?

Trả lời

2

Chúng tôi đã gặp sự cố tương tự ... Tóm lại, không có giải pháp sẵn sàng cho điều đó: nếu bạn mở các nguồn Ant hoặc Maven, 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 kịch bản đơn giản, nhưng thường thất bại trên ví dụ thủ tục lưu trữ.

Thực sự có các trình phân tích cú pháp ANTLR cho PL/SQL, chẳng hạn như Alexandre Porcelli's one —đó rất gần, nhưng vẫn chưa sẵn sàng để được sử dụng làm giải pháp thả xuống.

Chúng tôi đã kết thúc bằng văn bản yet another ad hoc splitter nhận thức được một số lệnh sqlplus như /EXIT - nó vẫn xấu xí nhưng hoạt động đối với hầu hết các tập lệnh của chúng tôi.

1

Tôi có thể nghĩ đến hai tùy chọn. Một trong những bạn không muốn - để Runtime.exec() nó để sqlplus. Cái còn lại là đọc trong tập tin xóa bỏ các dấu gạch chéo cuối dòng và gửi đến JDBC khi bạn nhấn một dấu chấm phẩy. Hoặc thêm vào một đợt khi điều đó xảy ra để giảm các chuyến đi đến cơ sở dữ liệu.

+0

Đó chính xác là những gì tôi đang cố gắng làm, nhưng tôi cần một trình phân tích cú pháp giống như SQLPLUS tốt sẽ chia toàn bộ tệp thành các phần nhỏ hơn. Chia nhỏ đơn giản bởi/hoặc; ký tự không hoạt động –

Các vấn đề liên quan