Câu trả lời:
Arun
bây giờ sqlcl đã có sẵn từ Oracle SQL Developer 4.1 EA2 (4.1.0.18.37), bạn có thể sử dụng nó rất nhiều như sqlplus cũ và nổi tiếng. sqlcl có cài đặt định dạng đầu ra cho csv
set sqlformat csv
spool x.csv
select * from yourtable[s];
spool off
để biết thêm thông tin về sqlcl checkout Blog của Kris
trước khi sqlcl dễ dàng nhất cho việc này là sử dụng APEX và xuất báo cáo sang csv. Trong sqlplus cũ đơn giản, bạn có thể làm điều này bằng cách sử dụng
set lines 9999 -- the appropriate size
set head off -- no header lines
set colsep ';' --column separator to ;
set pages 0 -- no pages
set feed off
select your data;
spool to_tofile
/
spool off
Điều này hoạt động tốt nhất nếu kết quả được ghi trên máy chủ ứng dụng hoặc máy khách. Nếu chúng phải được ghi trên máy chủ cơ sở dữ liệu, utl_file có thể là một lựa chọn tốt hơn.
Ronald.
Bạn nên xem gói UTL_FILE tích hợp. Có một số cách bạn có thể sử dụng nó.
Bạn có thể viết bất kỳ số lượng thủ tục nào trong các gói sử dụng gói UTL_FILE để ghi vào bất kỳ số lượng tệp nào. Các quy trình này sau đó có thể được gọi từ hầu hết mọi ứng dụng, kể cả SQL * Plus.
Bạn có thể viết một tập lệnh PL / SQL để thực hiện cùng một công việc và gọi tập lệnh từ chính dòng lệnh SQL * Plus bằng cách chỉ định @scriptname trên dòng lệnh.
Bạn có thể dán một khối bằng UTL_FILE trực tiếp vào SQL * Plus, nhưng điều này chỉ nên được sử dụng cho xuất một lần và thậm chí sau đó nó có thể không phải là tuyến tốt nhất.
Trong cách đơn giản nhất, xuất tệp bằng UTL_FILE sẽ bao gồm một cuộc gọi đến FOPEN , một hoặc nhiều cuộc gọi đến PUT_LINE và cuộc gọi đến FCLOSE .
Nếu hiệu suất là một mối quan tâm, bạn có thể muốn xem xét các công cụ từ các nhà cung cấp.
Tôi đã đánh giá các công cụ từ BMC, Wisdomforce, CoSort, DBCrane. Tất cả đều nhanh hơn đáng kể so với spool, utl_file hoặc bảng bên ngoài. Chúng tôi đang sử dụng DBCrane vì ông chủ của tôi không muốn chi quá nhiều cho giấy phép.
Bạn có thể sử dụng mô-đun Python và cx_Oracle để trích xuất dữ liệu vào đĩa ở định dạng CSV.
Đây là cách bạn kết nối với Oracle bằng cx_Oracle:
constr='scott/tiger@localhost:1521/ORCL12'
con = cx_Oracle.connect(constr)
cur = con.cursor()
Sau khi tìm nạp dữ liệu, bạn có thể lặp qua danh sách Python và lưu dữ liệu ở định dạng CSV.
for i, chunk in enumerate(chunks(cur)):
f_out.write('\n'.join([column_delimiter.join(row[0]) for row in chunk]))
f_out.write('\n')
Tôi đã sử dụng phương pháp này khi tôi viết TableHunter-For-Oracle