Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 И снова UTL_FILE!  [new]
_UTL_FILE_
Guest
Всем доброго времени суток!
Очень нужно понять как работает UTL_FILE, всё делаю локально, Oracle 9i.
Гугл уже перерыл, сейчас читаю тут и Тома Кайта "Oracle для професионалов", но чем больше читаю тем меньше понимаю что вообще делать нужно.
Подскажите где можно на примерах посмотреть как это всё работает?
Делаю например
create or replace directory mydir as 'C:\test';
пишет
Directory created.
но реально там не появляется никакой папки "test" или мне в ручную надо её создать а потом уже писать?
5 май 09, 15:24    [7148395]     Ответить | Цитировать Сообщить модератору
 Re: И снова UTL_FILE!  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
DIRECTORY - это объект базы, а не ОС - почувствуй разницу...
5 май 09, 15:26    [7148411]     Ответить | Цитировать Сообщить модератору
 Re: И снова UTL_FILE!  [new]
pravednik
Member

Откуда: Jacksonville, FL
Сообщений: 16268
оракл ничего не создает.
нужно создавать самому
5 май 09, 15:26    [7148413]     Ответить | Цитировать Сообщить модератору
 Re: И снова UTL_FILE!  [new]
_UTL_FILE_
Guest
tru55
DIRECTORY - это объект базы, а не ОС - почувствуй разницу...

Понятно, получается в ОС создаю папку, в(из) которой буду писать, а в базе прописываю дирректорию. Я правильно понял?
5 май 09, 15:37    [7148499]     Ответить | Цитировать Сообщить модератору
 Re: И снова UTL_FILE!  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
Угу.
DIRECTORY - это всего лишь средство для выдачи прав пользователям базы на директории сервера
5 май 09, 15:39    [7148512]     Ответить | Цитировать Сообщить модератору
 Re: И снова UTL_FILE!  [new]
_UTL_FILE_
Guest
tru55
Угу.
DIRECTORY - это всего лишь средство для выдачи прав пользователям базы на директории сервера

Ну с этим понятно.
А где почитать можно обо всём этом, в кратце с примерами и желательно на русском?
Ато уже голова кругом идет от всего прочитанного...
5 май 09, 15:44    [7148555]     Ответить | Цитировать Сообщить модератору
 Re: И снова UTL_FILE!  [new]
HOME_X
Member

Откуда:
Сообщений: 2549
_UTL_FILE_
tru55
Угу.
DIRECTORY - это всего лишь средство для выдачи прав пользователям базы на директории сервера

Ну с этим понятно.
А где почитать можно обо всём этом, в кратце с примерами и желательно на русском?
Ато уже голова кругом идет от всего прочитанного...



Если на разберетесь - ПИШИТЕ - помогу
Пример прилагаю ......
  Function QueryToFile(iText in Long,iFail in Long,iDel in Char:=Null,iWipe in Logical:=Null) return Integer as
    C    Long;
    I    Integer;
    vDes Dbms_Sql.Desc_Tab;
    vFil Utl_File.File_Type;
    vDel Char:=NVL(iDel,'│');
    vWip Logical:=NVL(iWipe,0);
    vRow Long:=FileNaim(iFail,'PATH');
    vExe Integer:=Dbms_Sql.Open_Cursor;
  begin
    select NVL(Max(DIRECTORY_PATH),vRow) into vRow from SYS.ALL_DIRECTORIES where DIRECTORY_NAME=Upper(Substr(vRow,1,Length(vRow)-1));
    if vWip=1 then begin 
      Utl_File.Fremove(vRow,FileNaim(iFail,'NAIM')); 
      exception when others then null; end;
    end if;
    vFil:=Utl_File.FOpen(vRow,FileNaim(iFail,'NAIM'),'A');
    Dbms_Sql.Parse(vExe,iText,Dbms_Sql.Native);
    I:=Dbms_Sql.Execute(vExe);
    Dbms_Sql.Describe_Columns(vExe,I,vDes);
    For I in vDes.First..vDes.Last Loop
      Dbms_Sql.Define_Column(vExe,I,C,IIF(vDes(I).Col_Type=12,Length(FrDate),vDes(I).Col_Max_Len));
    End Loop;
    While Dbms_Sql.Fetch_Rows(vExe)>0 Loop
      vRow:='';
      For I in vDes.First..vDes.Last Loop
        Dbms_Sql.Column_Value(vExe,I,C);
        vRow:=vRow||C||vDel;
      End Loop;
      Utl_File.Put_Line(vFil,vRow);
    End Loop;
    Utl_File.FClose(vFil);
    return Dbms_Sql.Last_Row_Count;
    Dbms_Sql.Close_Cursor(vExe);
  exception when others then
    return -1;
  end QueryToFile;
5 май 09, 22:58    [7150303]     Ответить | Цитировать Сообщить модератору
 Re: И снова UTL_FILE!  [new]
_UTL_FILE_
Guest
HOME_X

Если на разберетесь - ПИШИТЕ - помогу
Пример прилагаю ......
  Function QueryToFile(iText in Long,iFail in Long,iDel in Char:=Null,iWipe in Logical:=Null) return Integer as
    C    Long;
    I    Integer;
    vDes Dbms_Sql.Desc_Tab;
    vFil Utl_File.File_Type;
    vDel Char:=NVL(iDel,'│');
    vWip Logical:=NVL(iWipe,0);
    vRow Long:=FileNaim(iFail,'PATH');
    vExe Integer:=Dbms_Sql.Open_Cursor;
  begin
    select NVL(Max(DIRECTORY_PATH),vRow) into vRow from SYS.ALL_DIRECTORIES where DIRECTORY_NAME=Upper(Substr(vRow,1,Length(vRow)-1));
    if vWip=1 then begin 
      Utl_File.Fremove(vRow,FileNaim(iFail,'NAIM')); 
      exception when others then null; end;
    end if;
    vFil:=Utl_File.FOpen(vRow,FileNaim(iFail,'NAIM'),'A');
    Dbms_Sql.Parse(vExe,iText,Dbms_Sql.Native);
    I:=Dbms_Sql.Execute(vExe);
    Dbms_Sql.Describe_Columns(vExe,I,vDes);
    For I in vDes.First..vDes.Last Loop
      Dbms_Sql.Define_Column(vExe,I,C,IIF(vDes(I).Col_Type=12,Length(FrDate),vDes(I).Col_Max_Len));
    End Loop;
    While Dbms_Sql.Fetch_Rows(vExe)>0 Loop
      vRow:='';
      For I in vDes.First..vDes.Last Loop
        Dbms_Sql.Column_Value(vExe,I,C);
        vRow:=vRow||C||vDel;
      End Loop;
      Utl_File.Put_Line(vFil,vRow);
    End Loop;
    Utl_File.FClose(vFil);
    return Dbms_Sql.Last_Row_Count;
    Dbms_Sql.Close_Cursor(vExe);
  exception when others then
    return -1;
  end QueryToFile;


Спасибо большое!
Очень информативный примерчик, записать в файл получилось, теперь попробую изменить то что записал...
6 май 09, 07:28    [7150712]     Ответить | Цитировать Сообщить модератору
 Re: И снова UTL_FILE!  [new]
solo8
Member

Откуда:
Сообщений: 88
а что вот это такое:
vRow Long:=FileNaim(iFail,'PATH');
точнее что такое:
FileNaim
6 май 09, 11:47    [7151885]     Ответить | Цитировать Сообщить модератору
 Re: И снова UTL_FILE!  [new]
_UTL_FILE_
Guest
solo8
а что вот это такое:
vRow Long:=FileNaim(iFail,'PATH');
точнее что такое:
FileNaim


Да, я кстати тоже не совсем понял что это....
6 май 09, 13:41    [7152848]     Ответить | Цитировать Сообщить модератору
 Re: И снова UTL_FILE!  [new]
FileName
Guest
_UTL_FILE_,

Filenaim это русский английский. Нверное автор хотел написать FileName.
6 май 09, 15:42    [7153796]     Ответить | Цитировать Сообщить модератору
 Re: И снова UTL_FILE!  [new]
Саашка
Member

Откуда:
Сообщений: 142
http://www.adp-gmbh.ch/ora/sql/create_directory.html
6 май 09, 16:58    [7154447]     Ответить | Цитировать Сообщить модератору
 Re: И снова UTL_FILE!  [new]
solo8
Member

Откуда:
Сообщений: 88
не ну понятно, самописная функция какая -то
6 май 09, 19:53    [7155152]     Ответить | Цитировать Сообщить модератору
 Re: И снова UTL_FILE!  [new]
solo8
Member

Откуда:
Сообщений: 88
а могу я с помощью
Utl_File.Put_Line
записывать сразу несклько строк, а точнее сразу целый файл в нее пихать?
6 май 09, 19:55    [7155156]     Ответить | Цитировать Сообщить модератору
 Re: И снова UTL_FILE!  [new]
Elic
Member

Откуда:
Сообщений: 29991
solo8
а могу я с помощью
Utl_File.Put_Line
записывать сразу несклько строк, а точнее сразу целый файл в нее пихать?
Небольшой такой, до 32к - да.
6 май 09, 20:09    [7155183]     Ответить | Цитировать Сообщить модератору
 Re: И снова UTL_FILE!  [new]
_UTL_FILE_
Guest
А почему удалить файл с помощью UTL_FILE можно(Utl_File.Fremove), а создать нельзя? Или всё-таки можно?
7 май 09, 12:36    [7157210]     Ответить | Цитировать Сообщить модератору
 Re: И снова UTL_FILE!  [new]
Elic
Member

Откуда:
Сообщений: 29991
_UTL_FILE_
всё-таки можно
7 май 09, 12:42    [7157258]     Ответить | Цитировать Сообщить модератору
 Re: И снова UTL_FILE!  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
_UTL_FILE_
А почему удалить файл с помощью UTL_FILE можно(Utl_File.Fremove), а создать нельзя? Или всё-таки можно?


А почитать в доке описание пакета не судьба?

FOPEN Function

........
open_mode Specifies how the file is opened. Modes include:
r—read text
w—write text
a—append text

If you try to open a file that does not exist using a value for
open_mode, then the file is created in write mode.
7 май 09, 12:44    [7157270]     Ответить | Цитировать Сообщить модератору
 Re: И снова UTL_FILE!  [new]
_UTL_FILE_
Guest
tru55
А почитать в доке описание пакета не судьба?

Судьба, просто FOPEN сразу наталкнуло на мысль что это только для открытия файла.
Спасибо что направили куда надо.
7 май 09, 13:06    [7157412]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: И снова UTL_FILE!  [new]
May12
Member

Откуда: ТУЛЫП
Сообщений: 877
можно с помощью UTL_FILE создать txt файл с позиционированием значений из БД Oracle?
29 сен 11, 17:30    [11357241]     Ответить | Цитировать Сообщить модератору
 Re: И снова UTL_FILE!  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 6749
May12,

можно, разрешаю
29 сен 11, 17:48    [11357396]     Ответить | Цитировать Сообщить модератору
 Re: И снова UTL_FILE!  [new]
May12
Member

Откуда: ТУЛЫП
Сообщений: 877
какие другие инструменты существуют чтобы человек без навыков программирования смог создать такой txt файл с позиционированием?
3 окт 11, 20:16    [11377437]     Ответить | Цитировать Сообщить модератору
 Re: И снова UTL_FILE!  [new]
-2-
Member

Откуда:
Сообщений: 15330
May12
какие другие инструменты существуют чтобы человек без навыков программирования смог создать такой txt файл с позиционированием?
notepad.exe
3 окт 11, 20:36    [11377494]     Ответить | Цитировать Сообщить модератору
 Re: И снова UTL_FILE!  [new]
May12
Member

Откуда: ТУЛЫП
Сообщений: 877
какую версию блокнота вы используете?
расскажите как подцепить оракловые данные программой notepad.
4 окт 11, 09:33    [11378763]     Ответить | Цитировать Сообщить модератору
 Re: И снова UTL_FILE!  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 6749
May12,

SQL Developer + autogenerated select + copy-past
4 окт 11, 14:54    [11381651]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Oracle Ответить