Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Cách ghi vào tệp CSV bằng Oracle SQL * Plus

[SQL Plus] (https://docs.oracle.com/cd/B19306_01/server.102/b14357/qstart.htm) là một công cụ tương tác được cài đặt với mọi cài đặt Oracle hiện đại. SQL Plus cho phép bạn vượt ra ngoài các truy vấn cơ sở dữ liệu tiêu chuẩn với lô, tập lệnh và tính toán ngoài phạm vi thông thường của Oracle.

Thậm chí có thể, như chúng ta sẽ khám phá bên dưới - để tạo các tệp văn bản, chẳng hạn như .csv , sử dụng kết quả của một truy vấn cơ sở dữ liệu cụ thể.

Khởi chạy SQL * Plus

Tùy thuộc vào cài đặt Oracle của bạn, bạn có thể có quyền truy cập vào một trong nhiều phiên bản hoặc “chế độ” khác nhau để chạy ứng dụng SQL * Plus.

Dòng lệnh SQL * Plus

Nếu bạn muốn sử dụng SQL*Plus Command-line , bạn sẽ chỉ cần phát hành sqlplus lệnh từ trình bao của bạn:

$ sqlplus

Điều này sẽ cố gắng kết nối bạn với mặc định cơ sở dữ liệu và bạn sẽ được nhắc nhập thông tin đăng nhập để xác thực chính mình.

Trong trường hợp bạn cần kết nối với database khác hoặc sử dụng một user khác (schema ), hãy thử cách sau, thay thế các giá trị của riêng bạn nếu cần:

$ sqlplus schema@//machine.domain:port/database

iSQL * Plus

Nếu bạn có quyền truy cập vào nó, bạn có thể muốn sử dụng iSQL*Plus , là phiên bản dựa trên trình duyệt của công cụ dòng lệnh SQL * Plus.

Điều này được thực hiện bằng cách chỉ cần truy cập URL iSQL*Plus cho cơ sở dữ liệu và cài đặt của bạn. URL chính xác sẽ khác nhau, nhưng thường có định dạng sau:http://machine_name.domain:port/isqlplus

SQL * Plus dành cho Windows

Nếu bạn đang sử dụng Windows, cũng có phiên bản Windows GUI của SQL * Plus, phiên bản này thường có thể được khởi chạy từ menu bắt đầu của bạn:Start > Programs > Oracle > Application Development > SQL Plus .

Xuất Truy vấn thành tệp

Bây giờ bạn đã kết nối với SQL * Plus, chúng tôi có thể bắt đầu tạo tệp của mình.

Sửa đổi cấu hình SQL * Plus

Bước đầu tiên là định cấu hình một số cài đặt hệ thống SQL * PLus bằng cách sử dụng SET tuyên bố.

Đối với ví dụ này, chúng tôi sẽ thay đổi thủ công các cài đặt này một lần trước khi truy vấn và tạo tệp của chúng tôi, nhưng nếu muốn, bạn có thể thay đổi cài đặt mặc định của các cài đặt khác nhau trong User Profile của mình , nằm trong login.sql tệp.

set colsep ,
set headsep off
set pagesize 0
set trimspool on

Một số cài đặt đầu tiên mà bạn thường không muốn thay đổi, nhưng chúng tôi sẽ giải thích ngắn gọn những gì mỗi cài đặt đạt được.

  • colsep là ký tự phân tách được sử dụng để tách các cột của bạn. Đối với một .csv tệp, đây là một dấu phẩy đơn giản.
  • headsep là ký tự phân cách cho hàng tiêu đề (nếu bạn yêu cầu). Trong ví dụ này, chúng tôi không xuất hàng tiêu đề, vì vậy chúng tôi sẽ bỏ off .
  • pagesize là số dòng "trên mỗi trang." Đây là một cài đặt hơi cổ điển nhằm mục đích in mà không có quá nhiều dòng trên mỗi trang. Với giá trị 0 , chúng tôi không sử dụng các trang vì chúng tôi đang xuất ra một tệp. Nếu bạn chọn hiển thị header hàng, đặt pagesize đến một số lượng rất lớn (lớn hơn số lượng kết quả bản ghi dự kiến ​​trong truy vấn), vì vậy hàng tiêu đề của bạn sẽ chỉ hiển thị một lần thay vì một lần “trên mỗi trang”.
  • trimspool đặt thành on chỉ cần loại bỏ khoảng trắng ở cuối.

Bây giờ, hai cài đặt cuối cùng sẽ cần được thay đổi tùy thuộc vào truy vấn của bạn.

set linesize #
set numwidth #
  • Đối với linesize , # giá trị phải là tổng số cột đầu ra trong truy vấn kết quả của bạn.
  • numwidth là chiều rộng cột (số khoảng trắng ký tự) được sử dụng khi xuất giá trị số.

Lệnh SPOOL

Lưu ý:SPOOL lệnh không khả dụng trong phiên bản SQL * Plus dựa trên trình duyệt, iSQL*Plus . Để tạo tệp trong khi sử dụng iSQL * Plus, hãy thay đổi cài đặt tùy chọn cần thiết để xuất trực tiếp ra tệp.

Với cài đặt của chúng tôi đã được chăm sóc, bây giờ chúng tôi phải yêu cầu SQL * Plus xuất một tệp. Điều này được thực hiện bằng cách sử dụng SPOOL tuyên bố.

Trong khi SPOOL đang hoạt động , SQL * PLus sẽ lưu trữ kết quả đầu ra của bất kỳ truy vấn nào vào tệp được chỉ định.

Do đó, lệnh tiếp theo để nhập là spool :

spool file_path

Bỏ qua một chút về phía trước, sau truy vấn của bạn được chèn, bạn cũng cần dừng spool vì vậy đầu ra tệp được đóng bằng cách sử dụng spool off lệnh:

spool off

Chèn Truy vấn

Bước cuối cùng sau khi cài đặt được sửa đổi và spool đang chạy là để chèn truy vấn của bạn. Đối với ví dụ đơn giản của chúng tôi, chúng tôi đang xuất tất cả sách từ books của chúng tôi bảng.

SELECT
  title,
  primary_author
FROM
  books;

Đừng quên dấu chấm phẩy để đóng câu lệnh truy vấn của bạn, sau đó nhập spool off đã nói ở trên lệnh.

Vậy là xong, bạn đã tạo một tệp văn bản mới với kết quả truy vấn của mình bằng SQL * Plus.

Mẹo:Sử dụng tệp Script

Thay vì nhập từng dòng theo cách thủ công, bạn nên nhập tất cả các cài đặt vào một tệp tập lệnh mới mà bạn có thể thực thi trong SQL * Plus bằng một lệnh duy nhất.

Tạo tệp tập lệnh mới với EDIT tuyên bố:

EDIT file_name

Bây giờ dán toàn bộ danh sách lệnh script vào tệp mới của bạn và lưu. Toàn bộ nội dung của tập lệnh mẫu của chúng tôi có thể được tìm thấy bên dưới.

set colsep ,
set headsep off
set pagesize 0
set trimspool on
set linesize 2
set numwidth 5

spool books.csv

SELECT
  title,
  primary_author
FROM
  books;

spool off

Để thực thi tập lệnh, chỉ cần sử dụng @ ký hiệu theo sau là tên tệp:

@file_name

Tập lệnh của bạn sẽ được thực thi và .csv tệp được tạo như mong đợi.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dấu gạch dưới không hoạt động trong mệnh đề oracle like

  2. Lỗi:ORA-01704:chuỗi ký tự quá dài

  3. Làm thế nào để cấu hình DbContext để hoạt động với Oracle ODP.Net và EF CodeFirst?

  4. Trong cơ sở dữ liệu Oracle, sự khác biệt giữa ROWNUM và ROW_NUMBER là gì?

  5. Truy vấn hữu ích về việc hết hạn mật khẩu / Chính sách / Cài đặt của oracle EBS