Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да пишете в CSV файл с помощта на Oracle SQL*Plus

[SQLPlus](https://docs.oracle.com/cd/B19306_01/server.102/b14357/qstart.htm) е интерактивен инструмент, който се инсталира с всяка модерна инсталация на Oracle. SQL Plus ви позволява да надхвърлите стандартните заявки за база данни с пакети, скриптове и изчисления извън нормалния обхват на Oracle.

Възможно е дори, както ще разгледаме по-долу – да генерирате текстови файлове, като .csv , използвайки изхода от конкретна заявка за база данни.

Стартиране на SQL*Plus

В зависимост от вашата инсталация на Oracle, може да имате достъп до една от многото различни версии или „режими“, в които да стартирате приложението SQL*Plus.

SQL*Plus команден ред

Ако искате да използвате SQL*Plus Command-line , просто ще издадете sqlplus команда от вашата обвивка:

$ sqlplus

Това ще се опита да ви свърже с по подразбиране база данни и ще бъдете подканени да въведете вашите идентификационни данни, за да се удостоверите.

В случай, че трябва да се свържете с различна database или използвайте различен user (schema ), опитайте следното, като замените собствените си стойности, ако е необходимо:

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

iSQL*Plus

Ако имате достъп до него, може да искате да използвате iSQL*Plus , която е базирана на браузър версия на инструмента за команден ред SQL*Plus.

Това се постига чрез просто посещение на iSQL*Plus URL за вашата база данни и инсталация. Точният URL адрес ще варира, но обикновено е в следния формат:http://machine_name.domain:port/isqlplus

SQL*Plus за Windows

Ако използвате Windows, има и версия на Windows GUI на SQL*Plus, която обикновено може да се стартира от стартовото ви меню:Start > Programs > Oracle > Application Development > SQL Plus .

Извеждане на заявка във файл

Сега, когато сте свързани със SQL*Plus, можем да започнем да създаваме нашия файл.

Промяна на SQL*Plus конфигурация

Първата стъпка е да конфигурирате някои системни настройки на SQL*PLus с помощта на SET изявление.

За този пример ще променим ръчно тези настройки веднъж преди нашата заявка и генериране на файлове, но ако желаете, можете да промените настройките по подразбиране на различни настройки във вашия User Profile , намиращ се в login.sql файл.

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

Първите няколко настройки, които обикновено няма да искате да променяте, но ще обясним накратко какво постига всяка.

  • colsep е разделителният знак, използван за разделяне на вашите колони. За .csv файл, това е обикновена запетая.
  • headsep е разделителният знак за заглавния ред (ако ви е необходим). В този пример не извеждаме заглавния ред, така че ще оставим това off .
  • pagesize е броят на редовете „на страница“. Това е леко архаична настройка, която е предназначена за печат без твърде много редове на страница. Със стойност 0 , ние не използваме страници, тъй като извеждаме във файл. Ако изберете да покажете header ред, задайте pagesize до много голям брой (по-голям от очаквания брой резултати от записи в заявката), така че заглавният ви ред ще се показва само веднъж, а не веднъж „на страница“.
  • trimspool зададен на on просто премахва крайния празен интервал.

Сега последните две настройки ще трябва да бъдат променени в зависимост от вашата заявка.

set linesize #
set numwidth #
  • За linesize , # стойността трябва да бъде общият брой изходни колони в получената ви заявка.
  • numwidth е ширината на колоната (брой символни интервали), използвана при извеждане на числови стойности.

Команда SPOOL

Забележка:SPOOL командатане е налична в базираната на браузър версия SQL*Plus, iSQL*Plus . За да генерирате файлове, докато използвате iSQL*Plus, променете необходимите настройки за предпочитания за директно извеждане във файл.

С нашите настройки се погрижихме, сега трябва да кажем на SQL*Plus да изведе файл. Това се постига с помощта на SPOOL изявление.

Докато SPOOL е активен , SQL*PLus ще съхранява изхода от всяка заявка в посочения файл.

Следователно следващата команда за въвеждане е spool :

spool file_path

Прескачане леко напред,след вашата заявка е вмъкната, вие също трябва да спрете spool така че изходът на файла се затваря с помощта на spool off команда:

spool off

Вмъкнете заявката

Последната стъпка след промяна на настройките и spool се изпълнява е да вмъкнете вашата заявка. За нашия прост пример, ние извеждаме всички книги от нашите books таблица.

SELECT
  title,
  primary_author
FROM
  books;

Не забравяйте точката и запетаята, за да затворите заявката си, след което въведете гореспоменатия spool off команда.

Това е всичко, генерирали сте нов текстов файл с резултатите от вашата заявка с помощта на SQL*Plus.

Съвет:Използване на скриптов файл

Вместо да въвеждате ръчно всеки ред, се препоръчва да въведете всички настройки в нов скриптов файл, който можете да изпълните в SQL*Plus с една команда.

Създайте нов скриптов файл с EDIT изявление:

EDIT file_name

Сега поставете целия списък с команди на скрипта във вашия нов файл и запазете. Пълното съдържание на нашия примерен скрипт може да бъде намерено по-долу.

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

За да изпълните скрипта, просто използвайте @ символ, последван от името на файла:

@file_name

Вашият скрипт трябва да бъде изпълнен и .csv файл, създаден според очакванията.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Свързване на Oracle 21c към SQL Server

  2. Как да генерирам версия 4 (случаен) UUID на Oracle?

  3. Ръчно добавяне на нов RAC екземпляр

  4. Разбиране на разликите между API за таблици и транзакции

  5. Как да декларирам и използвам променливи в PL/SQL, както правя в T-SQL?