Câu trả lời là KHÔNG.
Nhưng tại sao bạn muốn di chuyển khối lượng dữ liệu từ Java sang máy chủ? (1) Java không được thiết kế cho điều đó, vì vậy nó sẽ rất chậm (2) bcp bản địa hoặc C + bcp hoặc perl + bcp hoặc bất kỳ lệnh shell + bcp nào sẽ hét lên xung quanh nó, và thay thế nó. Nó giống như muốn chạy bcp thông qua ODBC hoặc JDBC.
Chúng tôi cần phải di chuyển ra khỏi Hammer của Maslow và sử dụng Công cụ phù hợp cho công việc.
chi tiết hơn nữa, đáp ứng với nhận xét:
một chương trình bình thường để kết nối đến máy chủ ASE (Client-Server style) sử dụng cung cấp thư viện khách hàng mở; đây là bản địa, và di chuyển các gói TDS một cách hiệu quả. Kết nối là một vòi vườn rộng một inch. CÁC CHƯƠNG TRÌNH được viết bằng C, C++, COBOL, Perl và PowerBuilder sử dụng phương tiện này.
ODBC (và do đó JDBC vì nó được xây dựng trên ODBC) là một phương pháp đơn giản để kết nối với máy chủ bằng cách sử dụng một ống một mm. Trong khi điều này là khá thích hợp cho các nhiệm vụ như sử dụng Excel để vẽ biểu đồ trực tiếp từ các bảng ASE, nơi tốc độ truyền dữ liệu không liên quan; nó là không đủ để di chuyển dữ liệu của bất kỳ khối lượng đáng kể, để truy cập ứng dụng bình thường đến một máy chủ dữ liệu (ngoại trừ nơi "lập trình" là không biết gì về thực tế là [1] có sẵn).
.
Java không có [1] và được giới hạn cho vận chuyển [2] này.
bcp là một CHƯƠNG TRÌNH tiện ích (tự tồn tại) được cung cấp bởi nhà cung cấp kết nối với máy chủ chặt chẽ hơn nhiều. Nó không phải là một "bit đặc biệt của API ứng dụng khách". Không có "nói dối và gian lận" liên quan, tất cả các ràng buộc được chỉ đạo bởi DBA thực hiện nhiệm vụ. Kết nối là một ống lửa hai inch rưỡi, thường không có sẵn cho công chúng. Nó được thiết kế để di chuyển khối lượng dữ liệu lớn ở tốc độ. Nếu được sử dụng trên cùng một máy chủ với máy chủ, vì ống không được che khuất qua mạng, nó sẽ di chuyển dữ liệu nhanh hơn.
Sau đó, nhà cung cấp đã thực hiện khả năng bcp có sẵn dưới dạng Thư viện (API theo thuật ngữ của bạn), do đó có thể được gọi từ bất kỳ trình biên dịch được cấu trúc hợp lý nào. C, C++, COBOL, và Perl là như vậy, và tạo ra các CHƯƠNG TRÌNH, và do đó cung cấp quyền truy cập vào thư viện này trực tiếp từ mã của bạn. Kết nối là cùng một ống lửa hai inch rưỡi, nhưng do các lớp bổ sung, nó chạy ở tốc độ tối đa của một ống lửa hai inch.
(Lưu ý để độc giả mong đợi điều này là một danh sách đầy đủ: Có hai lựa chọn khác mà tôi đã không trình bày chi tiết ở đây, bởi vì họ là server-máy chủ và không liên quan đến chủ đề này).
Vì các CHƯƠNG TRÌNH Java hiện bị giới hạn trong kết nối một milimet với máy chủ ASE, không sử dụng API bcp cho Java (bạn sẽ chỉ có một ống lửa hai inch rưỡi được lưới qua mạng, với một FLOW của một milimét), nó là một doanh nghiệp vô lý. Có một lý do tại sao, mặc dù hàng triệu tổ chức đã đổ vào Java, trong quá trình phát triển um khá dài, không ai trong số họ đã chi tiền để cung cấp một nhà kho lửa di chuyển nhỏ giọt.
Bạn không thể đạt được tốc độ của chó săn từ chó dachshund, không có sử dụng cho việc đào tạo đường đua. Bạn có thể ngừng lời thì thầm trong tai của nó.
Thứ hai, Java không thể xử lý tập dữ liệu lớn (nguồn) hiệu quả, nó không được thiết kế cho điều đó. Do đó ngay cả khi sự bóp cổ JDBC đã được dỡ bỏ (ví dụ: Thư viện khách hàng mở gốc đã được triển khai), nó vẫn không thể di chuyển dữ liệu nhanh như C, C++, COBOL, Perl, PB; nó sẽ di chuyển dữ liệu ở mức nhỏ giọt (inch inch?) trong ống một inch. Vì vậy, thậm chí sau đó, nó sẽ là vô lý để cung cấp khả năng bcp cho thư viện Java; điều đó sẽ đáng giá nếu và khi Java (được thiết kế với các ưu tiên khác trong tâm trí) được bổ nhiệm với khả năng truyền dữ liệu lớn.
Có thể giúp di chuyển ra khỏi Java, Java và không có gì khác ngoài suy nghĩ Java và Sử dụng Công cụ phù hợp (PROGRAM) cho Công việc. Nếu bạn là một "lập trình viên" Java, thì ít nhất bạn cần phải tự làm quen với khả năng và hạn chế của ngôn ngữ lập trình của bạn và các thư viện có sẵn. Câu hỏi ban đầu chứng minh sự thiếu hiểu biết hoàn toàn về điều đó, do đó tôi phải cung cấp nó trong bài viết đã được sửa lại của tôi.
Các lập trình viên không bị giới hạn Java, hãy nghĩ về nơi có nguồn dữ liệu lớn; giảm thiểu việc truyền dữ liệu qua mạng; suy nghĩ về những chương trình đã được viết và có thể được sử dụng (trái ngược với việc viết riêng của họ trong sự cô lập với phần còn lại của hành tinh); và sử dụng chúng. Cuối cùng, để hiểu, ngay cả khi bạn đã có được khả năng bcp trong một số Thư viện, và thực hiện nó, khi bạn đặt "chương trình" trong thế giới thực, bất kỳ DBA hợp lý nào cũng sẽ loại bỏ nó do vận chuyển dữ liệu tốc độ nhỏ giọt của nó. và sử dụng bcp với vòi chữa cháy thay thế.
Tôi không phải là một người rõ ràng nhưng trong linh hồn tôi biết rằng mọi lập trình viên đều biết như bạn đã đề cập rằng bạn chỉ cần không Shell để các chương trình dòng lệnh để hoàn thành công việc. Bạn chỉ cần không. Cảm ơn bạn đã từ ngữ nó rất đẹp. – stu