Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Экспорт таблицы Oracle [D7]


Страницы:   1 2

vigo_ ©   (2006-12-12 10:32:00) 

Добрый день,
мне нужно сделать экспорт части (селект из) одной таблицы Oracle. Хотел сохранить как селект из SQL Navigator'a в *.xls, но Excel работает до 65 т. записей (в селекте около 200 тыс.), поэтому делать несколько xls-файлов не хочется. Посоветуйте как решить проблему?


ANB   (2006-12-13 14:26:00) [1]


> vigo_   (13.12.06 10:07) [19]

1. Штатный оракловый лоадер.
2. (ИМХО - самое удобное).
create table T1 as select * from where . . .
exp созданной таблицы (экспортить таблицы можно и по одной).
Потом в любой момент поднимаешь этот дамп в любую схему (imp) и делаешь с этой таблицей чего хочешь. В том числе можно и залить данные обратно (insert из select, merge (если могут оказаться дубли)).


roottim   (2006-12-13 11:20:00) [2]

а в Access ваш Sql Navigator позволяет?
если нет.. то думаю можно попробовать настроить ODBC и сделать импорт таблицы в Access


Sergey13   (2006-12-13 10:57:00) [3]

> [19] vigo_   (13.12.06 10:07)

Вот что бы сразу не описать так ситуацию.
1. По той ссылке вроде не одна прога, а несколько. Сам я их не пробовал, посему за работоспособность не ручаюсь.
2. Написать самому такую прогу (открыть в Оракле и тупо перекидывать в другой формат по 1 записи) - дело получаса.
3. Многие инструменты типа PL/SQL Developer позволяют сохранять результат запроса в разные форматы.


vigo_   (2006-12-13 10:07:00) [4]

Попробую сформулировать подробнее, в связи со сносом базы (этим занимаюсь не я), мне нужно извлечь некоторые данные одной из таблиц. С этими данными в дальнейшем возможно придется работать. При этом не хотелось бы сохранять в текстовый файл, т.е. работать с текстовым файлом. А сохранить в плоскую таблицу, чтобы потом, например, с помощью SQL Explorer'а настроить alias и получать инфо через SQL (а не поиском по файлу если он текстовый). При этом не получается сохранить в .dbf, с помощью [11], так как программа просит путь к файлу .dbf Поэтому-то я его и создавал вручную (в DataBase Desctop). Но так ничего с этим вариантом не получилось.


Sergey13   (2006-12-13 10:04:00) [5]

> [17] k2 ©   (13.12.06 09:46)

Так в этом случае нормальный штатный экспорт вообще решает все проблемы, ИМХО. Даже при сносе и переустановке Оракла.


k2   (2006-12-13 09:46:00) [6]

я так поняла, што ему нужно просто сохранить часть данных таблицы, штобы потом то ли сравниваться с ними, то ли перезалить обратно
если не подразумевается снос и перестановка оракула, то помоему достаточно будет временной таблицы


Sergey13   (2006-12-13 08:17:00) [7]

> [13] vigo_   (12.12.06 18:29)
> если я правильно понял, для этого нужно сначала создать dbf?
Почему "сначала"? Какова конечная то цель?
Я вообще не пойму чего тебе надо. Пока понял только что экспортируется из Оракла. Куда?!!!


rar   (2006-12-12 19:36:00) [8]

Если есть  PL/SQL девелопер, то там  есть возможность сохранить таблицу , а потом ее залить в другое место


k2   (2006-12-12 18:43:00) [9]

в другой схеме можно создать


vigo_   (2006-12-12 18:29:00) [10]


> Sergey13 ©   (12.12.06 11:14) [11]
>
> > [10] vigo_   (12.12.06 11:03)
>
> http://www.oraclub.tomsk.ru/
>
> В утилитах посмотри.

только что руки дошли написать, пока не получилось...

если я правильно понял, для этого нужно сначала создать dbf?  если да, то довольно странную ошибку выдает, мол, record size is too big for table. Кстати, такую же ошибку уже видел создавая таблицу (в DataBase Desctop'e) при сохранении, - пришлось поля типа varchar делать меньше номинальных значений.


> create table temp1 as
>  select <tra-ta-ta>


зачем мне в схеме еще одна таблица или имелось ввиду что-то другое?


k2   (2006-12-12 14:04:00) [11]

create table temp1 as
 select <tra-ta-ta>


Sergey13   (2006-12-12 11:14:00) [12]

> [10] vigo_   (12.12.06 11:03)

http://www.oraclub.tomsk.ru/

В утилитах посмотри.


vigo_   (2006-12-12 11:03:00) [13]


> ы  мне можешь написать через какие инструменты  ты  работаешь
> с  oracle

SQL Navigator

> Че те надо - внятно объясни. Куда конкретно надо экспортировать
> и для чего?

Нужно экспортировать часть данных таблицы, которая после наката базы накроется. А это информация мне может понадобится... вот собственно и все.


Reindeer Moss Eater   (2006-12-12 11:03:00) [14]

Берется родной оракловый плюс.
Пишется скрипт, получающий нужное подмножество записей таблицы и формирующий скрипт на инсерт в дбф. Включается спул в файл.
После выполнения скритпа в руках остается готовый сценарий для вставки.


Sergey13   (2006-12-12 10:56:00) [15]

> [6] vigo_   (12.12.06 10:53)

Че те надо - внятно объясни. Куда конкретно надо экспортировать и для чего?


erika   (2006-12-12 10:55:00) [16]

ты  мне можешь написать через какие инструменты  ты  работаешь с  oracle


vigo_   (2006-12-12 10:53:00) [17]

Предположим, что это будет локальная таблица, например, *.dbf. А как заливать туда данные?
> родными инструментами Оракл

если можно пример. Придется писать программу дабавления записей в таблицу из txt файла?


erika   (2006-12-12 10:45:00) [18]

(3)  и так можно


erika   (2006-12-12 10:44:00) [19]

{ Компонент Table1 делается неактивным }
Table1.Active := False;
Table1.TableName:='Dep.db';
if not Table1.Exists then begin
 with Table1 do begin
   { Указывается тип таблицы }
   TableType := ttParadox;
   { Описываются поля таблицы }
   with FieldDefs do begin
     Clear;
     with AddFieldDef do begin
       Name := 'Dep';
       DataType := ftString;
       Size := 20;
       Required := True;
     end;
     with AddFieldDef do begin
       Name := 'Proisv';

       DataType := ftBoolean;
     end;
   end;
   with IndexDefs do begin
     Clear;
     { Индекс без имени - первичный ключ таблицы }
     with AddIndexDef do begin
       Name := '';
       Fields := 'Dep';
       Options := [ixPrimary];
     end;
   end;
   { Создание таблицы методом CreateTable }
   CreateTable;
   Open;
   {Вставка записей}
   Insert;
   FieldByName('Dep').AsString := 'Бухгалтерия';
   FieldByName('Proisv').AsBoolean := false;

   Post;

   Insert;
   FieldByName('Dep').AsString := 'Цех 1';
   FieldByName('Proisv').AsBoolean := true;
   Post;

   Insert;
   FieldByName('Dep').AsString := 'Цех 2';
   FieldByName('Proisv').AsBoolean := true;
   Post;
 end;
end;

это пример из help'a


Sergey13   (2006-12-12 10:44:00) [20]

> [0] vigo_   (12.12.06 10:32)

Сделай полный экспорт таблицы, импортируй ее в другую БД под другим именем, грохни все ненужное, перелей в целевую таблицу. Все делается родными инструментами Оракл.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо