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

Как да намотавам към CSV форматиран файл с помощта на SQLPLUS?

Можете също да използвате следното, въпреки че въвежда интервали между полетата.

set colsep ,     -- separate columns with a comma
set pagesize 0   -- No header rows
set trimspool on -- remove trailing blanks
set headsep off  -- this may or may not be useful...depends on your headings.
set linesize X   -- X should be the sum of the column widths
set numw X       -- X should be the length you want for numbers (avoid scientific notation on IDs)

spool myfile.csv

select table_name, tablespace_name 
  from all_tables
 where owner = 'SYS'
   and tablespace_name is not null;

Изходът ще бъде като:

    TABLE_PRIVILEGE_MAP           ,SYSTEM                        
    SYSTEM_PRIVILEGE_MAP          ,SYSTEM                        
    STMT_AUDIT_OPTION_MAP         ,SYSTEM                        
    DUAL                          ,SYSTEM 
...

Това би било много по-малко досадно от изписването на всички полета и свързването им със запетаи. Можете да продължите с обикновен sed скрипт, за да премахнете празно пространство, което се появява преди запетая, ако желаете.

Нещо подобно може да работи...(моите sed умения са много ръждясали, така че това вероятно ще се нуждае от работа)

sed 's/\s+,/,/' myfile.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. Регистрирайте изхода на DBMS_OUTPUT.Put_Line в таблица в Oracle с DBMS_OUTPUT.Get_Lines

  2. ORA-00907:липсва дясна скоба

  3. Разлика между BYTE и CHAR в типовете данни на колоните

  4. Грешка при опит за извличане на текст за грешка ORA-01804

  5. Проблем с променливите за свързване на Oracle, които не използват правилно индекса