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

Oracle PL/SQL:Експортиране на данни от таблица в CSV

Научете как да използвате UTL_FILE пакет за експортиране на данни от таблица в CSV файла в Oracle PL/SQL.

В Oracle пакетът UTL_FILE съдържа много процедури и функции за писане на текстов файл. По-долу са данните за синтаксиса и необходимите стъпки за писане на файл:

Синтаксис и стъпки за писане на файл с помощта на UTL_FILE

-- Declare a variable to store file type
n_file UTL_FILE.FILE_TYPE;
-- Open the file in Begin section, it will open the file and return the file handle into the variable n_file
n_file := UTL_FILE.FOPEN('DIR_OBJ', 'YourCSVFileName.csv', 'w', 4000);
-- Write a single or multiple lines
UTL_FILE.PUT_LINE(n_file, 'abc, xyz, xxx');
-- Close the file
UTL_FILE.FCLOSE(n_file);

Основен пример

Declare
   n_file Utl_File.File_Type;
Begin
   -- The directory object MY_DIR must be exist or create a new one
   n_file := Utl_File.Fopen('MY_DIR', 'myfile.csv', 'w', '4000');

   Utl_File.Put_Line(n_file, 'First line.');
   Utl_File.Put_Line(n_file, 'Second line.');
   Utl_File.Put_Line(n_file, 'Third line.');

   Utl_File.Fclose(n_file);
End;

Както споменах в горния пример, обектът на директорията MY_DIR трябва да съществува. Обектът директория в Oracle е препратка към физическата директория на сървъра. Следва пример за създаване на обект на директория в Oracle:

-- Windows example
CREATE OR REPLACE DIRECTORY CSVDIR AS 'd:\oracle\csvfiles';
-- Linux example
CREATE OR REPLACE DIRECTORY CSVDIR AS '/usr1/oracle/csvfiles';

За да научите повече за обекта директория в Oracle, проверете тази връзка.

Експортиране на данни от таблица в CSV в пример на Oracle

Следва пример за съхранена процедура в Oracle, която ще експортира данните от таблицата EMP в CSV файл:

Create Or Replace Procedure exp_emp_data Is

    n_file     utl_file.file_type;
    v_string   Varchar2(4000);
   
  -- get the data using cursor 
  Cursor c_emp Is
    Select
        empno,
        ename,
        deptno,
        sal,
        comm
    From
        emp;

Begin
    n_file := utl_file.fopen('CSVDIR', 'empdata.csv', 'w', 4000);

-- if you do not want heading then remove below two lines
    v_string := 'Emp Code, Emp Name, Dept, Salary, Commission';
    utl_file.put_line(n_file, v_string);
    
    -- open the cursor and concatenate fields using comma
    For cur In c_emp Loop
        v_string := cur.empno
                    || ','
                    || cur.ename
                    || ','
                    || cur.deptno
                    || ','
                    || cur.sal
                    || ','
                    || cur.comm;
        
        -- write each row
        utl_file.put_line(n_file, v_string);
    End Loop;
    
    -- close the file
    utl_file.fclose(n_file);
Exception
    When Others Then
        -- on error, close the file if open
        If utl_file.is_open(n_file) Then
            utl_file.fclose(n_file);
        End If;
End;

Сега вашата съхранена процедура е създадена, изпълнете я, за да експортирате данните:

Begin
    exp_emp_data;
End;

Свързани уроци:

  • Помощна програма:Генерирайте PL/SQL процедура за експортиране на данни от таблица
  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-22905 - при запитване на тип таблица с оператор select

  2. Пресъздайте лош RAC възел

  3. Ръководство стъпка по стъпка за инсталиране на MySQL в Windows

  4. Безопасно TO_NUMBER()

  5. Как да решите ORA-02014:не може да избере ЗА АКТУАЛИЗИРАНЕ от изглед с DISTINCT, GROUP BY