Làm cách nào để xuất kết quả truy vấn sang csv trong Oracle SQL Developer?


Câu trả lời:


375

Phiên bản tôi đang sử dụng

văn bản thay thế

Cập nhật ngày 5 tháng 5 năm 2012

Jeff Smith đã viết blog cho thấy, điều tôi tin là phương pháp ưu việt để có được đầu ra CSV từ SQL Developer. Phương pháp của Jeff được hiển thị như Phương pháp 1 dưới đây:

Phương pháp 1

Thêm nhận xét /*csv*/vào truy vấn SQL của bạn và chạy truy vấn dưới dạng tập lệnh (sử dụng F5 hoặc nút thực hiện thứ 2 trên thanh công cụ trang tính)

nhập mô tả hình ảnh ở đây

Đó là nó.

Phương pháp 2

Chạy một truy vấn

văn bản thay thế

Nhấp chuột phải và chọn dỡ.

Cập nhật. Trong phiên bản dành cho nhà phát triển Sql phiên bản 3.0.04 đã được thay đổi thành xuất khẩu Nhờ Janis Peisenieks đã chỉ ra điều này

văn bản thay thế

Ảnh chụp màn hình sửa đổi cho SQL Developer Phiên bản 3.0.04

nhập mô tả hình ảnh ở đây

Từ định dạng thả xuống, chọn CSV

văn bản thay thế

Và làm theo phần còn lại của hướng dẫn trên màn hình.


25
+1. Thuật ngữ "Unload" có vẻ chống trực giác đối với tôi. Để "Tải" một số dữ liệu có nghĩa là chèn nó vào cơ sở dữ liệu; do đó "Unload" có nghĩa là dữ liệu sẽ bị xóa ...
Jeffrey Kemp

8
Trong phiên bản 3.0.04, tùy chọn này đã được đổi tên thành Xuất.
Janis Peisenieks

2
Tuyệt quá. trường hợp ps /*CSV*/không làm việc cho tôi, nhưng trường hợp thấp hơn /*csv*/đã làm. cảm ơn!
Eran Medan

3
Ngoài ra, lưu ý phương pháp 2 có thể gặp lỗi (vẫn có trong phiên bản 3.0.04 của tôi) khi nó chỉ bị treo với số lượng hàng lớn (3K hàng hoặc hơn). Tôi đang sử dụng SQLPLUS trường học cũ này vì trước tiên tôi không thấy phương pháp 1, nhưng một số có thể thích điều này: {code} THIẾT LẬP TÌM HIỂU TẬP HỢP TẬP HỢP ',' TẬP DÒNG 20000 PAGES 20000 TÌM KIẾM BẮT ĐẦU Spool C: \ Xuất \ EMP.csv - Bây giờ truy vấn CHỌN * TỪ EMP; Spool OFF
Jim P

1
@topr Sử dụng phương pháp 1, sau đó chọn tất cả, sao chép và dán vào trình chỉnh sửa văn bản và lưu dưới dạng csv. Bạn thậm chí có thể dán trực tiếp vào Excel, nhưng tôi không chắc về điều đó.
Travis

45

Không chính xác "xuất", nhưng bạn có thể chọn các hàng (hoặc Ctrl- Ađể chọn tất cả chúng) trong lưới bạn muốn xuất, sau đó sao chép bằng Ctrl- C.

Mặc định là giới hạn tab. Bạn có thể dán nó vào Excel hoặc một số trình soạn thảo khác và thao tác các dấu phân cách tất cả những gì bạn thích.

Ngoài ra, nếu bạn sử dụng Ctrl- Shift- Cthay vì Ctrl- C, bạn cũng sẽ sao chép các tiêu đề cột.


5
tuyệt vời, tôi đã tìm kiếm cụ thể về cách sao chép tiêu đề. cảm ơn!
mishkin

3
Vấn đề duy nhất, nếu bạn có nhiều hàng, điều này có nghĩa là nó sẽ phải truy vấn lại toàn bộ dữ liệu. và nếu đó là một truy vấn chạy dài, điều này có nghĩa là bạn chờ đợi rất nhiều cho trang đầu tiên, và sau đó chờ rất nhiều cho tất cả các trang sau khi nhấn ctrl + A. nói cách khác, giải pháp tuyệt vời, nhưng chỉ hoạt động hầu hết thời gian và cho các truy vấn tương đối nhanh hơn hoặc nhỏ hơn.
Eran Medan

Trên hàng dài, nó sẽ loại bỏ các công cụ sao chép của bạn! Không sử dụng cái này.
Hash

@Mark Chưa bao giờ thấy điều đó xảy ra bản thân mình. Có phải nó chỉ giữ 50 hàng đầu tiên hoặc một cái gì đó tương tự? Nếu vậy có một ưu tiên riêng cho điều đó. Nó chỉ sao chép những gì hiện có trong lưới, nhưng nếu bạn cuộn xuống dưới cùng của lưới SQL Dev sẽ tự động tìm nạp thêm hàng, vì vậy tôi có thể thấy ai đó có thể hiểu đó là một lỗi.
BQ.

1
Tôi đã thử làm điều này trên 43K hàng dữ liệu và nó chỉ chạy mãi mãi - cách xuất tùy chọn nhanh hơn. Điều này thật tuyệt vời nếu bạn chỉ có một vài hàng dữ liệu.
izikandrw

28

FYI, bạn có thể thay thế /*csv*/ cho các định dạng khác bao gồm /*xml*//*html*/. chọn /*xml*/ * from empsẽ trả về một tài liệu xml với kết quả truy vấn chẳng hạn. Tôi đã xem qua bài viết này trong khi tìm kiếm một cách dễ dàng để trả lại xml từ một truy vấn.


4
/ * insert * / đặc biệt hữu ích.
jeremyjjbrown 17/07/14

Các tập tin đi đâu?
Bất thường

Không sao, tôi đã xem qua phần "run as script", không nhận ra đây là điểm khác biệt so với nút chạy thông thường.
Bất thường

4

FYI cho bất cứ ai gặp vấn đề, có một lỗi trong xuất khẩu dấu thời gian CSV mà tôi chỉ mất vài giờ làm việc xung quanh. Một số trường tôi cần xuất là loại dấu thời gian. Nó xuất hiện tùy chọn xuất CSV ngay cả trong phiên bản hiện tại (3.0.04 kể từ khi đăng bài này) không đặt các biểu tượng nhóm xung quanh dấu thời gian. Rất bực bội vì không gian trong dấu thời gian đã phá vỡ quá trình nhập của tôi. Cách giải quyết tốt nhất tôi tìm thấy là viết truy vấn của mình bằng TO_CHAR () trên tất cả các dấu thời gian của mình, điều này mang lại đầu ra chính xác, mặc dù có nhiều công việc hơn. Tôi hy vọng điều này sẽ giúp ai đó tiết kiệm thời gian hoặc đưa Oracle vào cuộc với bản phát hành tiếp theo của họ.


1
Phiên bản 3.0.04 của tôi vẫn có một lỗi trong đó nó chỉ bị treo với số lượng xuất lớn hơn (của tôi là 3K hàng). Cách khắc phục đơn giản của tôi là sử dụng SQLPLUS thay thế:
Jim P

Trong trường hợp của tôi, Kiểu dữ liệu không gian ( docs.oracle.com/cd/B19306_01/appdev.102/b14255/ trộm ) đã được xuất như thế này (chú ý dấu phẩy) MDSYS.SDO_GEOMETRY(2001,8307,MDSYS.SDO_POINT_TYPE(-122.39096,37.79251,NULL),NULL,NULL)mà không được đặt trong dấu ngoặc kép. Và tôi đang sử dụng SQL động nên tôi không thể TO_CHAR () các cột này. Bất kỳ đề xuất?
Hạt đậu đỏ

Mặc dù tôi đang sử dụng SQL động và chỉ chọn *, (và tôi không muốn sửa đổi điều này thành ngoại lệ cho một cột SQL kiểu dữ liệu không gian), có lẽ tôi có thể thử hai điều: 1) Sử dụng một COLSEP khác '|' hoặc 2) Trước câu lệnh CHỌN, chỉ định cách định dạng cột này bằng docs.oracle.com/cd/B19306_01/server.102/b14357/ch12013.htmlm
Hạt đậu đỏ

2

Để xuất một hệ thống địa phương của bạn từ nhà phát triển sql.

Path : C:\Source_Table_Extract\des_loan_due_dtls_src_boaf.csv

    SPOOL "Path where you want to save the file"
    SELECT /*csv*/ * FROM TABLE_NAME;

1

Xuất CSV không thoát khỏi dữ liệu của bạn. Coi chừng các chuỗi kết thúc \bởi vì kết quả \"sẽ trông giống như một chuỗi thoát "và không phải là a \. Sau đó, bạn có số sai "và toàn bộ hàng của bạn bị hỏng.


Đó có lẽ không phải là một lỗi - bạn có thể quyết định cách trích dẫn được thoát và mặc định là thoát nó bằng một ký tự trích dẫn khác, không phải dấu gạch chéo ngược. Trong trường hợp đó, "foo\"là một chuỗi trích dẫn hoàn toàn hợp lệ.
Ken Williams

Nó đủ đơn giản để thay thế mọi lần xuất hiện của \ bằng \, nếu bạn biết trước về nó. Cảm ơn!
jpaugh

Có, đủ đơn giản và có thể sai cho hầu hết các công cụ nhập CSV.
Wormbo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.